Transferring SMS messages from Windows Mobile to Blackberry devices
UPDATE (12 Aug 2017): Due to some outstanding issues with the SMS2IPD tool such as Unicode support and message extraction issues on some devices, which will most likely forever remain unfixed because I no longer have any Windows Mobile 6.x devices (which are no longer supported by Microsoft), I have decided to stop maintaining SMS2IPD.
The original source code for the application can be downloaded here. The CAB setup file can be found in the SMS2IPD_CAB folder.
For a more robust tool to restore text messages to Blackberry devices from a CSV (comma-separated values) backup, refer to my other tool, CSV2IPD.
The original article, written in 2010, is archived below for informational purposes only.
This may seem an easy task – one may immediately think of using the Device Switch Wizard in Blackberry Desktop Manager or do a quick search for some SMS backup/restore software which will do the job. However, while I was doing it, I came across some challenges which turns this into a difficult job:
1. The Device Switch Wizard found in the Blackberry Desktop Manager simply does not migrate the SMS messages.
2. There are plenty of applications that perform SMS backup/restore for Windows Mobile but there are none for Blackberry.
The first challenge is expected as many users simply do not need to migrate text messages to their new phones and it is therefore understandable that the Device Switch Wizard ignores SMS during the migration process but the second challenge disappoints me. I was realistic – I never expected to find a tool that transfers text messages on-the-fly, perhaps with the tool running on Windows, the Blackberry connected via Blackberry Desktop Manager and the Windows Mobile device connected via ActiveSync. BUT I was hoping to find some software that can restore Blackberry SMS from a backup, perhaps XML-formatted, which can be created by a tool running on Windows Mobile.
I was wrong – there are no such applications for Blackberry. This is explained by the fact that RIM does not provide an API for Blackberry applications to programmatically access the SMS messages store (there are, however, APIs to access email messages).
My approach
My ideas come from the fact that Blackberry Desktop Manager allows user to backup device memory (including contacts, calendar and SMS) into an IPD file, and restore from the IPD backup. Although the IPD file format is not documented by RIM, it is easy to reverse engineer (for example, by using a hex-comparison tool) due to its unencrypted and tokenized nature. There are previous attempts to do this, for example ipddump and MagicBerry. The latter is extremely useful as it allows you to view, edit, merge and split IPD files.
Keeping the above in mind, I came up with a tool that runs on Windows Mobile device and backs up all text messages into an IPD file. The file created can later be opened using Blackberry Desktop Manager and the text messages can be restored back onto the Blackberry device.
Final product: SMS2IPD
In the lack of a better name, let me call it SMS2IPD, short for SMS to IPD Converter. Here’s how to use it:
1. Run the tool on your Windows Mobile device. You will need .NET Compact Framework 3.5 and above.
2. Select the correct time offset so that SMS timestamps will be correctly displayed. For example, if you are in GMT+8, select -8 for the time offset. The selection is needed as I am not sure which field to set to specify the timezone of the SMS messages.
3. Click on Start, choose the location to save the IPD file. Give the application some time to run, when completed, it will produce the IPD file.
4. Connect your Blackberry and start Desktop Manager, choose Backup/Restore, then click on Restore again. Select the IPD file created in step 1 and Desktop Manager will proceed to transfer all SMS to the device.
Note: this process may take a long time during which Desktop Manager may seem to hang. It will also overwrite all existing text messages on the Blackberry device, so back them up and merge them to the IPD first using MagicBerry. MagicBerry may also seem to hang when loading a large IPD file, so be patient.
Limitations and future improvements
I myself reverse engineer the IPD file format by using a hex editor, a hex comparison tool and MagicBerry, with some references to ipddump and MagicBerry source code, so there will be cases not handled properly. These include SMS with special characters, unicode SMS, and SMS sent from a timezone different from your device timezone.
Upon imported on the Blackberry device, all messages may appear as unread. You can mark all as read by scrolling to the top of the messages list (which displays the date), press the Blackberry key and choose Mark Prior Opened.
Some Blackberry devices by default will delete text messages older than 30 days. This behaviour can be changed by opening Options in Messages, choose General Options, and select a longer period for “Keep Messages”.
I attached the source code for those interested to improve the application. You can modify and re-distribute the application and its source code as you like, but please mention that the source code was taken from my blog. You may not, however, use the source code and/or the application for any commercial purposes.
Credits
To read the SMS messages from a Windows Mobile device, I am using MAPIDotNet library found on codeproject, written by rwt33. The version I used was downloaded some time back, so it may differ significantly from the current version found in the project article.
Downloads
SMS2IPD CAB Installer for Pocket PC and Smartphone, Windows Mobile 5 and above with .NET Compact 3.5 (updated 10 Oct 2010) – removed as SMS2IPD is no longer maintained. See notice at the beginning of this article.
it says,
an unexpected error has occurred in sms2ipd_vb.exe
select quit and then restart the program or select detail for more information.
message text unavailable.resource the file microsoft.visualbasic resources not found.
and when i hit detail error it says,
sms2ipd_vb.exe
invalid operation exception
message text unavailable.resource the file microsoft.visualbasic resources not found.
at sms2ipdvb.myproject.myforms.create_instance_(T)(form1 instance)
at
at sms2ipdvb.myproject.myforms.get_forms1() at sm2ipd_vb.form1.main()
any help would be greatly appreciable thanks.
Hi. Thanks for the info. The application requires .NET Compact Framework 3.5
The .NET framework on your device may not be up-to-date. Please install the latest version, reboot the device and try again.
can you make a youtube video. I think you would get large amount of views, because there are thousand of people out there looking for this info and a video would be ideal to grasp the concepts quickly.
when I unzipped the file I get 7 files with extensions _setup.xml, SMS2IP~1.000, 0MAPIlib.001, MAPIDO~1.002, 00footer.003, 00header.004, SMS2IP~1.005
I don't get any .exe or .cab files to run on my phone I have already installed .NET Compact Framework 3.5 on my phone and rebooted it, and now I am stuck
I tried to use HJ-Split to join the files but all it did was change 0MAPIlib.001 to 0MAPIlib I am completely lost on this now please help.
J.Bond
Hi, thanks for trying. The CAB file you downloaded from this article is supposed to be run on the Windows Mobile device, not to be extracted on your computer. Run it and install the SMS2IPD tool on your device and follow the instruction in this article. Let me know if you manage to get it working.
I will try to make a youtube video when I have the time too.
i have already switched phones, where is the location I should drag and drop the files into. Ive tried the file manager folder and the program files folder but no luck
J.Bond
my old phone is unable to log onto the internet and download any applications
Hi, are you familiar with installing app on Windows Mobile phone? The SMS2IPD.CAB you download is just an installer for the tool. You will need to copy the SMS2IPD.CAB to your device, either by copying to a memory card and put in in your device, or use ActiveSync to copy it to the device. Then, on the device file explorer, click on the CAB file to install and run the tool.
every time I run the application it says
===============================================
Error
an unexpected error has occured in the SMS2IPD_VB.exe.
Select Quit and then restart this program, or select Details for more information.
Message text unavailable. Resource file 'Microsoft.VisualBasic resources' not found.
================================================
then every time I click on details it says
================================================
Error
SMS2IPD_VB.exe
InvalidOperationException
Message text unavailable. Resouce file 'Microsoft.VisualBasic resources' not found.
at
SMS2IPD_VB.My.MyProject.MyForms.Create_Instance_[T](Form1Instance)
at
SMS2IPD_VB.My.MyProject.MyForms.get_Form1()
st SMS2IPD_VB.Form1.Main()
=================================================
J.Bond
every time I run the application it says
===============================================
Error
an unexpected error has occured in the SMS2IPD_VB.exe.
Select Quit and then restart this program, or select Details for more information.
Message text unavailable. Resource file 'Microsoft.VisualBasic resources' not found.
================================================
then every time I click on details it says
================================================
Error
SMS2IPD_VB.exe
InvalidOperationException
Message text unavailable. Resouce file 'Microsoft.VisualBasic resources' not found.
at
SMS2IPD_VB.My.MyProject.MyForms.Create_Instance_[T](Form1Instance)
at
SMS2IPD_VB.My.MyProject.MyForms.get_Form1()
at SMS2IPD_VB.Form1.Main()
=================================================
correction the last line of the error code reads "at" not "st" Im not sure if that would have made a drastic difference of your understanding of the error message but I just thought I migth repost the correction just incase
J.Bond
Bingo. A true Genius you are. Great Job.
I wonder why BB or Microsoft can't bundle this.
but you are great.
It helped me transfer my WM to BB.
thank you.
Samir.
Samir, glad it helped you. Cheers
hi MD,
I have the same Invalid Operation Exception
problem as told before by others. Is there any solution for that error? I'd like to transfer text messages from a htc rose (wm 6.1) to a bb torch.
thank you,
edina
Hi edina,
Thanks for trying the app. The invalid Operation Exception is a known problem when running on some phones. I will try to fix it and update the link within the next few days