Code Repo    |     RSS
MD's Technical Sharing



Monday, March 15, 2010

Transferring SMS messages from Windows Mobile to Blackberry devices

UPDATE (14 Feb 2015): 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 and removed the download from this article.

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.

43 comments:

  1. It would be so nice, but the sw hangs at exactly 1000 message.
    "generic error: system.nullreferenceexception: nullreferenceexception location: sms2ipd_vb.form1.mnustart_click(object sender, eventargs e) lovations: system.windows.forms.menuitem.onclick(eventarges e)..."

    ReplyDelete
  2. Thanks for your feedback. For me to to fix the error, let me know the exact text display on the screen as well as the exact error messages when the application hangs.

    ReplyDelete
  3. I have updated the installer and the source code to fix a potential issue. Please try again and let me know the results.

    Thanks :)

    ReplyDelete
  4. I am looking for a solution to import my old Nokia SMS into my new BB9700. Is there any way to do this? NBU Converter from Amber failed. It has "Messages" instead of "SMS Messages" in the ipd header and the BB Desktop doesnt recognize the file.

    ReplyDelete
  5. Hi, I believe it's possible to use a hex editor to edit the IPD file and change the header to what Desktop Manager expects. The IPD file is not encrypted, nor is there a checksum to verify its integrity. As long as you change reasonably, it should work.

    You can also use Nokia PC Suite to export all SMS to a CSV file. Send me a sample and I will help to write a tool to convert the CSV file to an IPD file readable by desktop manager.

    ReplyDelete
  6. Where can I find your Email-Adress? My Email is tyrant(at)gmx.de

    ReplyDelete
  7. Help
    I'm geting this error when i try to run the SMS2IPD
    I'm running WM5 and have updated the .NET to v2.0

    file or assembly name 'system.windows.forums' version=3.5.0.0, culture=neutral,publickeytoken=969DB8053D3322AC,or one of its dependencies, was not found.

    ReplyDelete
  8. Hi. The application requires .NET CF 3.5. Please install it, reboot the device and try again.

    ReplyDelete
  9. Help,i am getting the following error,

    An Unexpected error has occured in sms2ipd_vb.exe

    message text unavailable. Resource file 'microsoft.visualbasic resources' not found

    ReplyDelete
  10. Brilliant work! Thank you very much and God bless!

    ReplyDelete
  11. i currently use a windows mobile device. my inbox has subfolders. can this program also transfer my subfolders and all their contents to a blackberry device? thanks for any feedback!

    ReplyDelete
  12. Hi. I don't think it supports exporting sub-folders since the IPD format that I use does not support sub-folders. But feel free to try and let me know. You can always move all messages to the top-folder before exporting to IPD file.

    ReplyDelete
  13. could you modify it to support subfolders? :) just a thought.

    in any case, thank you so much for this program! will try it out later and will let you know if it works with subfolders.

    ReplyDelete
  14. Hi. I could read the sub-folders on Windows Mobile but there's no way I know of to embed the sub-folders in the Blackberry IPD file. So the IPD file will contain all messages found (in different folders) on Windows Mobile phone in a single Blackberry SMS Inbox folder. I may work on this in the future when my time allows. :)

    ReplyDelete
  15. Hi, fantastic - I have thousands of messages salvaged! One problem is that Chinese characters became ??? after the export & import process. I do not know where did it go wrong. Any solution? Cheers!

    ReplyDelete
  16. Hi KSW, thank you for trying the app. The issue with Chinese characters (and other Unicode characters) is a known problem as I have not yet figured out how to generate an IPD file with Unicode SMS properly. I will resume work on Unicode support in the future when my time allows.

    ReplyDelete
  17. Hey MD, I would like to say thank you! This is exact something which i am looking for.. i have searched each page of google, wastn't able to find a tool, untile get here.... Really thanks for sharing..

    Rohan

    ReplyDelete
  18. This is a fantastic tool! I managed to transfer all my smses from Windows to my new BlackBerry. You mentioned MagicBerry could be used to edit SMSes. I've tried exporting my smses to .ipd and opening it with MagicBerry but could not find a way to edit my smses except to export it to .csv but from .csv, I do not know how to upload it back to my BlackBerry. Could you help/advise?

    ReplyDelete
  19. Hi, glad you find the tool useful. As mentioned in the article, MagicBerry can read IPD file and export selected or all entries to CSV. It can also merge selected entries (SMS, contacts) from 2 IPD files into a single file. As far as I know it is not capable of editing IPD file beyond this.

    ReplyDelete
  20. Hi MD, I face the following error when using the app.
    Error:
    Generic Error:
    System.Exception:
    pIMAPIContainerOpenEntry failed: MAP_E_CALL_FAILED at MAPIdotnet.cemapi.MAPIContainer.OpenEntryAsNessage(Byte[]entryID) ...... (its a really long error code)

    Any suggestions?

    Rgds,
    NB

    ReplyDelete
  21. Hi NB, may I know which phone model you are using? The application supports Windows Mobile 5 and above only. .NET CF 2.0 or 3.5 is required (which I think you already have). Windows Mobile 2003 is not supported. If you try to run, you may get a similar error message.

    Some phone models/firmwares have been known to use a custom SMS/MMS software, and not the one provided by Microsoft. SMS2IPD will not work in these phones.

    Some other devices by default will prevent applications from reading the SMS/MMS database. You will need to change the device security settings for the application to work. If you are using Visual Studio 2008 with Windows Mobile SDK, try Tools>Device Security Manager and turn off the security settings. If you don't have VS2008, search Google and try to find some CAB files to do the same.

    ReplyDelete
  22. hi MD, had you figure how to convert SMS with chinese characters to blackberry? Or is there a walkaround for that?

    ReplyDelete
  23. Hi, unfortunately I have not yet found the time to fix this program to support Unicode, including Chinese characters. You may want to try my other similar tool, CSV2IPD, http://minhdanh2002.blogspot.com/2010/10/restoring-sms-backup-from-csv-to.html, which have some simple support for Unicode.

    ReplyDelete
  24. Do you recommend a program that can do the opposite? That is transfer sms from .ipd onto Windows Mobile?

    ReplyDelete
  25. Hi. It's possible to migrate SMS from BB to WM by following the following steps:

    1. Use Blackberry Desktop Manager to export all SMSes on BB onto an IPD file.

    2. Use MagicBerry (http://code.google.com/p/magicberry/) to extract the IPD file to a CSV file.

    3. Find an app on WM that can import SMS backup from CSV file. There is the challenge of finding the correct tool and manipulating the CSV file to get it accepted by the tool. I think this can be done with some efforts - there are plenty of SMS backup/restore tool for Windows Mobile and some advanced text editors can handle CSV file quite well.

    I myself wrote a few apps that can read in a CSV file exported from MagicBerry and import the SMSes to Windows Mobile, but due to time constraints, I never packaged these apps for public release.

    ReplyDelete
  26. Recommend any program to convert .ipd to .csm?

    ReplyDelete
  27. I am not sure. You can use MagicBerry to export the IPD to CSV, then write your own converter (provided that the file format is known) :)

    ReplyDelete
  28. i couldnt make it work om my wm6.5 htc maple program says unexpexted error and it quit

    ReplyDelete
  29. Hi, can you give me the exact error message? Thanks for trying the tool :)

    ReplyDelete
  30. 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.

    ReplyDelete
  31. 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.

    ReplyDelete
  32. 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.

    ReplyDelete
  33. 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

    ReplyDelete
  34. 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

    ReplyDelete
  35. 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.

    ReplyDelete
  36. 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

    ReplyDelete
  37. my old phone is unable to log onto the internet and download any applications

    ReplyDelete
  38. 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.

    ReplyDelete
  39. 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.

    ReplyDelete
  40. Samir, glad it helped you. Cheers :)

    ReplyDelete
  41. 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

    ReplyDelete
  42. 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 :)

    ReplyDelete

Note: Only a member of this blog may post a comment.