Pimlical - Direct Sync to Android

Overview

If you want to skip all the background information on how sync works, you can skip to the section below by clicking on it:

Sync Method: DirectSync (Local HTTP)

However, if you run into any problems or things do not work as you expect, it is strongly advised to read through this document so you understand how syncing works.


Pimlical DirectSync makes it possible to sync the local databases in Pimlical Desktop to the local databases in Pimlical/Android without any intermediate database or application. All operating systems (Windows 32-bit, Windows 64-bit, Macintosh, Linux) are supported by DirectSync. Syncing of P/D to P/A via Google Calendar has several security and safety issues for many users for these reasons:

The Direct Sync feature addresses all these issues by invoking a synchronization routine when the Android phone is connected to the PC and mounted as a standard Windows drive type. This can be accomplished either with a standard USB cable (32-bit windows and compatible Android device), or via a local WiFi connection (using WebDAV), or via a direct HTTP Connection internal to Pimlical. But that is not a requirement for syncing. If the operating system can see and access the Android phone as a standard external drive, then Pimlical can sync without any isues.

Only the local databases (PimlicalLocalCalendar.dat, contacts.dat, memos.dat) on the Android device are synced to Pimlical/Desktop. Android calendars and contacts are ignored by the sync routines. You can choose to use the local calendar as a complete replacement for using the native Android calendar:

In this example, there are eight categories in Pimlical's local database and the same eight categories in Pimlical/Android. DirectSync keeps them both in sync with each other and no information is stored on any public servers. The connection between Pimlical/Desktop and Pimlical/Android can be made by the standard USB cable, or by some third party network add-ons which allow the SD card on the Android Phone to appear as a networked device in the Desktop application. At this time, the Pro version of WebDAV (on Google Play) has been used by many Pimlical users and it appears to be fast and robust.

Alternatively, Pimlical can use a combination of local and Google calendars seamlessly in both the Desktop and Android versions:

In this example, in Pimlical/Desktop, this user has a local database with categories of 1990-1999, 2000-2009 (archives of old events) and the categories Private, Caroline and Medical, none of which the user wants to see on any public server (like Google's). They also read three Google Calendars (Personal, Work and Kids) which appear as the categories G_Personal, G_Work and G_Kids in the Pimlical Desktop display.

Pimlical/Android displays exactly the same items as Pimlical/Desktop, with the local categories appearing in Pimlical/Android's PimlicalLocalCalendar and the three Google Calendars appearing as the Android calendars (A_Personal, A_Work and A_Kids). The G_ and A_ prefixes are used to remind the user that these are special categories that actually correspond to external calendars.

Pimlical/Desktop's Google Sync routine keeps Pimlical/Desktop in sync with Google Calendar and Google's Android Sync routine keeps Google Calendar in sync with the native Android calendar database.

If you use hybrid approach, be sure that any names of local categories in Pimlical/Desktop and Pimlical/Android don't conflict with names of Google Calendars, especially if the P/D preference AssignPimlicalCategoryToGC is set to true. Otherwise, you could end up inadvertently repopulating/duplicating items into the Google calendar from the local category.

Unless you are a power user, you will probably want to decide whether to use DirectSync in lieu of Google Calendar or not. If you do, you need to turn off google and android calendars as otherwise you will see items duplicated (appearing once in google/android and once in the local calendar). To turn off Google and Android calendars:

Pimlical/Desktop:    Set the preference GoogleRefreshInterval to 0, SyncGoogleCalendarOnStartup to false  and go into Menu | File | Google Calendars and tap on None button so no google calendars are read.

Pimlical/Android:     Set the preference GoogleRefreshInterval to 0, and HideAllAndroidCalendars to true.

Where the PimlicalLocalCalendar file is stored

The PimlicalLocalCalendar.dat file is stored on the Android device's SD card (or in the case of devices without a physical SD card - on the virtual Sd card that almost all Android devices support, such as the Kindle Fire). The file is stored in the PimlicalCalendars folder which is contained within the main Pimlical Folder on the SD card: The layout of all the folders used by Pimlical is shown below (Folders are red, files are blue):

{SD CARD}
        {Pimlical}
                SystemPreferences.dat
                default.txt
                default.dat
                (Other preference files, filters, screen templates, control files etc.)

                {PimlicalCalendars}

                        PimlicalLocalCalendar.dat
                        (Other local calendars, backups stored here}

                {PimlicalMemos}
                        Memos.dat - database with local memos, along with backups
                {PimlicalContacts}
                        Contacts.dat - database with local contacts, along with bckups

Some Android 4.x phones (Ice Cream Sandwich version and later) have both an external SD card and "phone storage" and since this is not supported by the standard Android OS (some phone vendors have added custom code to the Android OS), if you want to force Pimlical to use the SD card rather than the default Phone Storage and have a version of the Android OS prior to OS 4.4 - see section below Forcing Use of SD Card in Android 4.x

Setting up the Local Calendar on an Android Device from the Existing Calendar

There is a special command that provides for an easy one-time migration of all your data in your Android calendars to the Pimlical Local Calendar - menu | Select Calendars, press the [ + ] button (to the right of the Green checkmark button). Use the default calendar name provided of PimlicalLocalCalendar.dat and press the OK button to copy all your currently selected, native Android calendar(s) into the PimlicalLocalCalendar. Note that if you are changing the calendar selection, you must exit out of the selection dialog first to refresh those selected calendars to the screen -  then go back in again and the [ + ] button will then only copy those calendars into the Local Calendar.

Be sure to only display the Local calendar and those Android calendars (if any) that you did not copy into the local calendar, as otherwise you will get duplicate items displayed in Pimlical/Android. Pimlical does this automatically after copying all the items into the Local Calendar, but you can end up with a duplicate display if you subsequently go back into the selection list and re-select a calendar that had been previously copied into the Local Calendar.

There is a preference HideAllAndroidCalendars which can be set to true to hide all calendars from the Calendar selection list. You may want to set this to true if you only want to use the local Pimlical Calendar and never look at the Android calendars.

Note that it is perfectly reasonable to display the Local Calendar and some number of Android calendars that you did not copy into the local calendar. For example, you may want to use the Local Calendar to hold older events that Google would otherwise unexpectedly delete (Google does not handle old events in calendars in a reasonable fashion). Use caution, however, when mixing local and Android calendars - in particular, do not display an Android calendar whose appointments you already transferred into the local calendar, or you will see duplicates.

When handling the local calendar on the Android device, a line is added in the Edit dialog to display the category list.

Setting up Local Calendar on Android Device from Desktop

You can also setup the Local Calendar on the Android device directly from the Pimlical/Desktop during the sync process (See below).

For many users, it may be practical to use the Local calendar to archive a large number of old entries, and then not normally display it (so it does not impact performance). On those rare occasions where you do need to review old items, you can use Menu | Select Local Calendar to search it, etc.

Preparing for Sync

The Simplest approach for most users will be to use the DirectSync(Local HTTP) option. As long as you have a network connection, this provides the quickest method of syncing. You will need to know the IP Address of your laptop/desktop and enter that information into the preference HttpAddressesForSync in Pimlical/Android (See section below on how to find your IP Address).

You can also sync your device by setting up a WebDAV server on your Android phone and then connecting to it from your desktop via local WiFi connection at which point it will appear as a standard Windows7/8 network drive. See the section Setting up WebDAV in Windows for the one-time setup instructions. You may also be able to connect with a USB cable if (a) your Android phone supports a USB Mass Storage Option, or (b) supports a compatible MTP type connection (not all Android devices support an MTP type connection that works with Pimlical -- Pimlical will indicate if it is compatible or not). In general, you will likely have more success using the DirectSync(Local HTTP) option or setting up a WebDAV server for syncing.

Sync Dialog


Above dialog shows the normal appearance of the Sync Dialog when invoked for the first time. Click on one of the three radio buttons at top to select the Sync Method. Most users will likely use the DirectSync(Local HTTP) connection.

Depending on which sync method you chose, read the section below that covers the operation and setup for that method:

Sync Method #1: DirectSync (Local HTTP)

Before syncing, both your dekstop and phone must be connected to the same network and you will need to know your PC's IP network address. In almost all cases, the IP address will be the one displayed in the  Connect button in Pimlical/Desktop (in example above: 192.168.1.3). However, if you have multiple IP Addresses etc. see also section: Finding your PC/Laptop's private IP Address below. That IP address needs to be entered into Pimlical/Android's preference: HttpAddressesForSync  (In system settings of menu | Preferences). If you have a volatile network, the IP Address may change, in which case you can put in more than one HTTP address separated by commas, but you should try and have the first address be the correct one, as otherwise, Pimlical wastes time trying to figure out which one is really valid.

Step 1

In Pimlical/Desktop, Click  (your IP address will differ) You will then see on the line: Connection Status, this legend:

The word Checking will be blinking on and off as it waits for Pimlical/Android to connect.


Step 2

In Pimlical/Android, select menu | DirectSync:

Pimlical/Android should display a wait dialog with the legend: Sending Files to Pimlical/Desktop


Step 3

Pimlical Desktop will now briefly display on the Connection Status line:


with the (Reading) flashing on and off as the files are transferred. The Connection Status line will then change to:


Step 4

In Pimlical/Desktop, tap the OK  button. Pimlical/Desktop will then sync all the files and display a Synchronization dialog at the conclusion similar to the one below:


In Pimlical/Desktop, tap on the OK button in any of the Dialogs like the one above, and the Sync will then conclude. You may see a brief message about sending files back to Pimlical/Android (and Pimlical/Android will also change the legend on the Wait dialog to indicate that it is receiving files back from Pimlical/Desktop, and then the sync dialogs on both platforms will disappear.

If you don't see the DirectSync menu option in Pimlical/Android, go into Menu | Preferences | Commands/Functions | MenuCommandsAndOrder preference and make sure the DirectSync menu option is set to display.

Sync Method #2: Path to P/A as Folder

Use this Sync method whenever Pimlical/Android has been mounted as a standard Windows Network device. This can be accomplished if (a) you use a WebDAV server, (b) your phone supports USB Mass Storage and is connected via a USB cable, or (c) you have manually copied the files from your phone to a folder accessible from windows.

Step 1

Click on the button 


Step 2

Navigate to the folder on the phone where the PimlicalLocalCalendar.dat file is located as shown below:

The navigation will usually start in the top folder on your phone and you should be able to see the Pimlical folder there. PimlicalCalendars is a sub-folder within that folder and that is where the calendar files are stored.

The PimlicalLocalCalendar.dat file is selected here - press the Select Calendar Sync File button to set the path to the local calendar file.


Step 3


The above dialog shows that the path has now been set to the phone and is ready for syncing.  Click the OK button to sync.


The next time you invoke the Sync dialog, this path will be remembered. If the Device has not been connected and mounted as a PC type disk drive, or if the device for some reason connected as a different device (say perhaps K: because you added a new USB device at some point), the following will be displayed on the Connection Status line:

While this dialog is displaying, Pimlical is constantly checking to see if the device has been mounted and located, and when that happens the Connection Status line will immediately display a green checkmark showing that the connection has been made. It often takes several seconds after connecting the cable or mounting the device for it to actually show up as a mounted device in windows. If it fails to connect, you can use Windows File Explorer to look at the devices to see if in fact it mounted properly under windows (it must show as being mounted properly under windows for the green checkmark and confirmation to be displayed).

Until the green checkmark is displayed and the device is connected, the OK button is disabled.

Alternatively, if your device is connected via USB cable and supports a compatible MTP connection, you can click on the button Connect to MTP Device. If the connection is not compatible, Pimlical will report that it did not find an MTP connection.

Note: there is a fundamental flaw in the Android OS's support for connections that interrogate the Android Filing system: the directory contents as seen from the outside are apparently cached and do not necessarliy reflect the most recent changes that have been made. As a consequence, if you use a WebDAV server, you may find DirectSync reporting that no changes have been made when in fact you made a recent change. This bug has been around for many years and as of OS 5.1 still remains unaddressed by Google for inexplicable reasons (in fact, Google keeps on claiming it's been closed as an issue when it remains completely unaddressed). For now, if you need to see immediate changes made on an Android device, use a third party app like SD Rescan (but you will still have to wait up to a minute or more for it to force the refresh).

Sync Method #3: USB/MTP Connection

Use this Sync method if you have a compatible MTP connection available on your phone and you are running on a 32-bit version of Windows. MTP Connections are not supported on 64-bit versions of Windows or Macintosh or Linux operating systems.  Not all phones that offer an MTP connection have a connection protocol that is compatible with Pimlical/Android, so if the device refuses to connect and you are confident the cable is plugged in (which you can tell because you should be able to see the device in Windows File Manager), then you will need to select a different sync method.

Note: there is a fundamental flaw in the Android OS's support for connections that interrogate the Android Filing system: the directory contents as seen from the outside are apparently cached and do not necessarliy reflect the most recent changes that have been made. As a consequence, you may find DirectSync reporting that no changes have been made when in fact you made a recent change. This bug has been around for many years and as of OS 5.1 still remains unaddressed by Google for inexplicable reasons (in fact, Google keeps on claiming it's been closed as an issue when it remains completely unaddressed). For now, if you need to see immediate changes made on an Android device, use a third party app like SD Rescan (but you will still have to wait up to a minute or more for it to force the refresh).

Step 1

Click on the button

If successful, you will see this:


To the right of Path to P/A as Folder you will see Android Media Device followed by the name of the local Calendar that Pimlical will sync to. If you need to change this (for example, you are going to sync or setup an archive calendar), you can tap on   and enter the name of the calendar you want to sync (or create, as Pimlical will create a new, empty calendar if it does not exist).


Step 2

Click on the OK button to initiate the sync. 




Sync Options

Synchronize files. This option reads the Android calendar database, merges in all the updates, deletions and new items, and then writes the updated database back to the Android device's sd card. At the conclusion of the sync, the calendars on Pimlical/Desktop and Pimlical/Android are functionally identical.

Desktop OVERWRITES Device. To enable this option, you must first select the radio button OVERWRITE Files which will then enable the two overwrite options. In this case, Pimlical/Desktop will write its local calendar database to the Android device, replacing the calendar (if any) that is on that device. This option can also be used to create the local calendar on the Android device initially.

Device OVERWRITES Desktop. In this case, Pimlical/Android's local calendar database will overwrite Pimlical/Desktop's local database - replacing whatever was there.

[  ] Include Appointments. This checkbox indicates that all appointment items should be included in the sync and is normally checked. If unchecked, calendar items are not include in the sync or overwrite.

[  ] Include Tasks. This checkbox indicates that all Task items should be included in the sync and is normally checked. If unchecked, task items are not include in the sync or overwrite.

[  ] Include Memos. This checkbox indicates that all Memos should be included in the sync and is normally checked. If unchecked, memo items are not include in the sync or overwrite.

[  ] Include Contacts. This checkbox indicates that all Contacts should be included in the sync and is normally checked. If unchecked, Contact items are not include in the sync or overwrite.

[  ] Only Show Changes/Additions in Log File.  This checkbox is normally checked as usually only changes and additions to the log file need to be in the log file. If unchecked, every single record in the database and its disposition on the sync will be recorded in the log file.

[  ] Display Sync Log at conclusion of Sync. If checked, the log file is automatically displayed at the conclusion of the sync.

Sync conclusion

When the sync concludes, a status dialog appears. If you were synchronizing (normal case), a report is provided showing the number of updates to the desktop and device databases, as well as the number of new items added to each database:

Sync Log

When syncing, Pimlical maintains a sync log that can either contain just the updates and additions to the databases or a comprehensive log that shows the match on every item and the notation that the events were considered identical. By default the checkbox to Only Show Changes/Additions in Log File is checked - uncheck that box for the comprehensive version of the log file. When recalling the sync dialog, there is a button that allows you to view the log file (you can easily hit CTRL/A, CTRL/C to copy the entire contents of the log file into some text editor to perform special searches, etc.).

The log file has the name: PimlicalLocalSync.log and it is located in the Pimlical folder on the desktop. if DebugMode is set true (menu | Preferences | System section) in the desktop Preference database, The log files are created with a unique name including the date/time stamp (such as: PimlicalLocalSync20120405T195036.log, where the date time is in YYYYMMDD 'T' HHMMSS format). If you do set DebugMode, remember that these log files will proliferate in that folder and will need to be deleted at some point.

Controlling what gets synced

When syncing the calendar, Pimlical/Desktop uses two preference settings ( ApptCategoriesToSync and TaskCategoriesToSync ) to control which categories participate in the sync process. By default, these two preferences are set to (All) - which means that all categories of that type (appt or task) are synced. If you only wish certain local categories to be synced, they should be selected in these preference settings prior to the sync.

Only items in those categories are synced to the device. Items created in categories other than those categories on the device will be synced to the desktop, but will not be present in the device after the sync completes as they will not be copied back to the device.

Floating Events

If advances and floating reminders are being managed on both platforms (a configuration that is supported by this Direct Sync, but typically not by any other sync mechanism) Pimlical avoids confusing those items as new events on each platform based upon matching up the two separate reminders (which will have different uniqueID's) by comparing the target uniqueID of the two events and if those match, the version of the floating reminder with the latest date will prevail (that way, if only one platform is set to advance floating events, the platform that is advancing the floating events will prevail). If a floating reminder is found on the device that has a corresponding match on the desktop (based upon the target unique ID - i.e. they are both advances/reminders that point to the same event) but the date/time stamps are identical, the device will still prevail.

NOTE: For DirectSync, you will almost certainly want to advance floating events on both platforms, so set the preference AdvanceFloatingEventsTime to a value other than midnight.  You must also set the preference FloatAdvanceSetsDirtyFlag to false on both platforms. Otherwise, whichever platform advances floats at the latest time, those floats will override the floats on the desktop if they were advanced at an earlier time (and vice-versa).

Pimlical also ensures that both the desktop and device databases are purged of any duplicate floating reminders/advances. A reminder/advance is considered redundant if there is another reminder that is not deleted, has a status of normal, and which points to the identical target. There should only ever be one active reminder/advance for a target event at any given time.

Backup and Recovery

When syncing, Pimlical compares all events in the device calendar with the desktop calendar, ignoring all events that are perfect matches (i.e. where the date/time stamp of the last modification is identical on records that share the same uniqueID), updating all events in the desktop calendar where the uniqueID's match and the last modification date/time of the device is later, and adding in all newly created events in the device calendar. Pimlical then writes the updated calendar back to the device.

Before writing the updated calendar back to the device, the local calendar on the Android device is backed up with the standard Pimlical backup mechanism (i.e. creating the bk1/bk2/bk3/bkw/bkm backup files). The desktop database is also written out and backed up prior to the sync. This means at the conclusion of the sync, if there was any issue, the condition of both databases immediately prior to the sync can be restored by using the latest bk1 version of the database.

Finding your PC/Laptop's private IP Address

Windows users can find all available network adapter IP addresses using the Control Panel. From the Control Panel, open the "Network and Sharing Center" on Windows 7 or the equivalent "Network and Internet" menu item on Windows 8. In the new window that pops up, look for the "Connections:" section located on the right-hand side. Click the hyperlink for the current active connection listed in this section, and then click the "Details…" button in the new window that appears to view all the IP address information. The IP Address typically takes the form 192.168.1.4 (192.168 is always used for your local network).

Alternatively, running the ipconfig utility displays a list of addresses assigned to the PC. If connected to the local network via Wi-Fi, the active IP address will be shown under the "Wireless LAN adapter Wireless Network Connection" section of the ipconfig output. If connected via Ethernet, the address will be shown under "Ethernet adapter Local Area Connection."  To run Ipconfig, click on Start button, type CMD {enter} and in DOS window at C: Prompt, type: ipconfig{enter}.

If you are syncing over a non-local network, you will need to address issues of firewalls, etc. - in particular, make sure that Pimlical has access through your firewall as otherwise, syncing is obviously not going to work. You can verify that your PC can access your phone via the network by using the Ping command:

Click on Start button, type CMD {enter} and in DOS window at C: Prompt, type: Ping 192.168.1.5 {enter}, where 192.168.1.5 is the network address of your phone (your current network address can be found in your Android System Settings and will be different from 192.168.1.5).

If you have no local network, keep in mind that many new Android phones have a feature to create a mobile hot-spot, and if you set that up you can use the local htttp sync over that network.

Trouble-Shooting Problems with the Local HTTP Connection Sync Method

First: what are the IP addresses of your phone and PC? Are they on a local network or are you trying to sync over a remote network? If on a local network, they will start out typically with 192.168 - if you see other numbers at the start you are probably trying to sync over the internet - that raises a host of issues such as firewalls etc. so it's important to know if you are trying to do that. 

Second, did you look at your firewall settings? Most users have a firewall that only lets certain applications through - so you should look at whitelisting Pimlical so it is allowed to get through your firewall.

Third, is your WiFi network marked as a public or private (Home) network? Some firewalls will not permit any connections to take place if you have marked it as a public network. If it's a home network, you would generally mark it as a home/private network (of course, this assumes you have property security set up for your home network - if you have an open network in an urban area, then it's not a good idea to mark it as private/home (but in that case, it still makes more sense to fix the underlying problem and setup a secured login for your network).

Fourth make sure the preference MaintainAuditTrail (system settings in Menu | Preferences) is set to true on both platforms (by default it is true on desktop but usually false on Android, so set them both to true).

Try another sync. After it fails, take a look at these two files:

PimlicalDesktop_AuditTrail.txt in the Pimlical folder of the desktop installation, and
PimlicalAndroid_AuditTrail.txt in the Pimlical folder of the Android installation.

Menu | Help | About or Menu | About tell you where the Pimlical folder is located.  These two files may contain useful error messages or indications as to why the sync is not working.

You can also test to see if your two devices can see each other on the network. On the desktop, hit start button (or equivalent) and get to the RUN field where you can run an application and type in:
CMD{Enter}
At the old-style MS/DOS C: prompt, type in:
Ping 192.168.1.5

Where the numbers above are the IP address of your phone - you should see it indicating that it can reach that address - if you see a REQUEST TIMED OUT error that means they are *not* connected via the network or you have the wrong IP address, or a firewall is prohibiting access.

You can do the same thing on your Android Phone with a free, third-party app like NET PING which you can download from google Playstore or Amazon Market.

Do you have multiple network adapters or networks? One thing you can do, again at the old-style MS/DOS C: prompt is type:

Ipconfig

And see if you have more than one Ipv style IP address (that's something like 192.168.1.1). Pimlical/Desktop has a specific preference (UseThisIPAddress) that allows you to override the normal, default IP address that Java provides for your desktop.

If you are using a VPN (Virtual Private Network), you should test the connection with the VPN disabled at both ends. It might be that your VPN is blocking port 8000 which is the port that Pimlical uses for the local HTTP Connection.

If you have a USB cable, make sure you UNPLUG that connection as otherwise Pimlical may try and connect via the USB/MTP method even though that does not work on your device (and prevents the local HTTP connection from being tested).

If you are still unable to get the connection working, send the two audit trail files along with a detailed description of what you have tried to Pimlico Tech Support.

Forcing Use of SD Card in Android 4.x

Note: Android 4.4 (KitKat)  no longer makes it possible for a third party app to have full access to your SD card. Although it would be possible to get Pimlical/Android to run with its own folder, there are severe limitations that make it highly unadvisable to do that (in particular, the folder is deleted when the application is uninstalled, and if you move the card to another device, the files are not likely to be visible). However, if you are running an earlier version of Android (4.3 or earlier), the procedure below will allow Pimlical/Android to use the physical sd card. Android 5.0 (Lollipop) restores some of the prior functionality, and so it may yet again be feasible to support your physical SD card.

Some Android 4.x devices (Ice Cream Sandwich version) support both SD card(s) and what is referred to as Phone Storage or Media Storage. When connected to windows desktop, Windows own File Manager can see Phone/Media Storage as a pseudo-device, but other applications (including Pimlical) can not. In that case, you would have to copy the local calendar file to the desktop using File Manager, sync and copy it back. However, if the Android device does have an SD Card, you will typically want to use that instead of Phone Storage as then you can have Pimlical/Desktop access the folder with the local calendar directly.

There are devices that do have an SD card that displays normally under windows, except that Pimlical defaults to using Phone Storage instead (this is due to the fact that the Android function that normally returns the file path to the SD card instead returns the path to the phone storage). If this is the case with your phone, there is a feature in Pimlical/Android that will still allow you to have Pimlical use the SD card instead, but this does require a bit of fiddling: Create a one line text file (in windows or in Android phone) with the name PimlicalStoragePath.txt, where the one line of text contains the full path to the SD card. For example, the SD card usually appears as /mnt/sdcard. One some Motorola phones, the path to the Sdcard is /mnt/sdcard-ext in which case the one line in the PimlicalStoragePath.txt file would be:
/mnt/sdcard-ext
Then make sure this file appears in the root directory of the path that Phone Storage appears in. When Pimlical first launches, it checks to see if a file with this name exists, and if so, uses that path instead - so this file must be located in the folder that Pimlical first looks in. If you need assistance in getting this to work properly, contact technical support. If you are not sure what the path is to your SD card, you might install a free file manager as most of those will tell you what the path is to the SD card.

On Samsung phones, the sd card is usually 'extSdCard' - so you would put /mnt/extSdCard in the PimlicalStoragePath.txt file and put that file in /mnt/ (which is basically the root folder above extSdCard and sdcard (the latter being an emulated SD card in internal storage). The path is case-sensitive, so make absolutely sure it is 'extSdCard' and not something like 'ExtSdCard' which will not work.

Also, some newer Android phones (such as Motorola Atrix 2) give you the option of treating the USB connection as either "Mass Storage" or "Media Device" - definitely pick Mass Storage as then it will mount as a regular windows device that can be seen by Pimlical/Desktop.

As users provide more information, here are some additional comments that may be helpful:

Motorola Razr Maxx HD: the location of the Sd card appears to be /mnt/external1. The path /sdcard is not for the SD card at all, but appears to be the virtual Sd card in internal storage. Put the PimlicalStoragePath.txt file (Specifying /mnt/external1) in /sdcard to force Pimlical to use the physical SD card.

Using Multiple Local Calendar Files

You can set up as many local calendar files as you wish, but only one can be viewed at any one time in Pimlical/Android. To switch to a different local calendar, use menu | Select Local Calendar. If you don't see this menu option, go into Menu | Preferences and select the preference: MenuCommandsAndOrder in the [commands/Functions] section and make sure that menu  item is selected for display.

A typical use of having multiple local calendars is when you have an enormous calendar database with lots of historical data that you rarely need to look at, but must be able to view when it's needed. By putting the older data in an archive calendar(s), you can keep the current local calendar compact so it reads quickly. And on those rare occasions where you need to look at the archive, having to switch to it and wait for it to read is a small penalty to pay for the much faster response you get by keeping the  current calendar relatively compact.

Why Deleted Records are kept in the database

Deleted records must be preserved in the database for at least a while in order for syncing to work properly. If you think about it for a moment, you will realize that if you remove ALL traces of Record X from Platform B, when you sync Platform A and Platform B, if Platform A has Record X, the sync routine will assume that this must be a new record that was never synced to Platform B and will promptly copy it to B as a new record. From your perspective it may look like the record you deleted just reappeared and something is wrong, but the problem was caused by removing all traces of a deleted record. Had that deleted record stayed in the database, then when syncing, the routines would see the deleted record on Platform B, observe that the date/time stamp was later, and then would delete record X from Platform A. So do not use the commands to remove deleted records in some misguided belief that it is a good thing to do! For one thing, the Pimlical databases are so compact that removing records to save space is a complete waste of effort and accomplishes nothing. Second, you can always hide deleted records from view, so there is no reason whatsoever that keeping deleted records should ever pose any issue.

Delete records must be kept for at least long enough that a sync will take place - example: if you sync every other day,. then you MUST hold deleted records for at least 2 days and would set the preference: DaysToKeepDeletedRecords to 3 as a minimum value.

Setting up WebDAV in Windows

There are several third party software solutions for mounting your Android device as a networked windows device that can then be accessed wirelessly by Pimlical/Desktop. At this time, most Pimlical users seem to like Olive Tree's WebDAV Server Pro.  Windows/XP does not support WebDAV, so you will need Windows7/8 or Vista (but you will need to make sure Vista is fully updated to use WebDAV).

WebDAV Server Pro is available through Google Play (https://play.google.com/store/apps) and the Amazon Market.

Here are step by step instructions on how to set WebDAV Server Pro.

By the way, make sure you do *not* put in a user name/password into WebDAV Server Pro - there's a bug somewhere and it will not connect under windows if you do that.

Confirm that WebDAV knows where your external media is located - almost all Samsung and some Motorola phones have TWO external storage areas and you need to make sure that WebDAV is looking at the SAME place that Pimlical/Android is looking. See menu | about in Pimlical/Android to see the path (usually something like /mnt/SdCard or /mnt/ExtSdCard) and go into WebDAV) and make sure that WebDAV displays the same path for HOME DIRECTORY: - WebDAV will display 'storage' instead of 'mnt' - so normally would show something like /storage/extSdCard or /storage/sdcard.

Also, when you start the server on your Android phone, it can easily take up to 30-60s for Windows to be able to see the path and connect to it. You can also launch Windows File Explorer to look at the same HTTP:// path that WebDAV presents for your Android device.

Then in windows:

  1. Right-click computer and select MAP NETWORK DRIVE.

  2. Click on link: CONNECT TO A WEB SITE THAT YOU CAN USE TO STORE YOUR DOCUMENTS.....

  3. Click on NEXT button in dialog :ADD NETWORK LOCATION.

  4. Click on NEXT button in dialog WHERE DO YOU WANT TO CREATE THIS NETWORK LOCATION (make sure CHOOSE A CUSTOM NETWORK LOCATION Is selected - usually it's the only option).

  5. For INTERNET OR NETWORK ADDRESS:, type in the full URL that WebDAV Server Pro displays on your Android phone - for example: http://192.168.1.12:8080 then click on NEXT button.

  6. If you entered it correctly, you get a dialog WHAT DO YOU WANT TO NAME THIS LOCATION? type in something you will recognize easily - I usually enter something like HTC Phone 192.168.1.2:8080 - so I know the device and also what path it used (because that might change if you reconfigure the network). Click on NEXT button .

  7. Click on FINISH button .

The phone should then appear as a device in file manager, AND Pimlical should be able to see it too in the DirectSync dialog, when you click on the Path button at the top of the dialog and navigate to HTC Phone 192.168.1.2:8080 (or whatever the name was that you assigned to your phone).

You only have to do this setup one time.

For other versions of Windows and Mac, there is a set of instructions at this web page:
http://android.nextapp.com/site/websharing/doc/webdav


A couple of important details in the WebDAV mapping setup: in putting in the internet address in the Map Network Drive/Specify location of website screen you must include the http://, not just the numbers. And in the "user Name" field it is case-specific, so use "owner", not "Owner". Also it's a good idea in WebDAV to go into Settings and mark it as a high priority service, so it does not get killed while DirectSync is running.

You may also want to make sure that the Windows Service WebClient is set to startup automatically (chances are it's set to manual). To do that on Win7, go into Control Panel | Administrative Tools | Services, right-click on WebClient, select Properties and change the startup type to Automatic and click on OK. In Win8: go to the search charm and search for local services (alternatively go to Start, and just start typing local services). You'll see 1 match under "Settings" as View Local Services. Find the service named WebClient. Right-click and choose Properties, then change the startup type to Automatic.

If you can connect via web browser, but not by Pimlical, make sure there is no password or username set in WebDAV (tap on menu button to get to settings and make sure box to use username and password is unchecked.

When you startup the server, it may take 30s to a minute before it is fully recognized by windows - it is not instantaneous. It sometimes works well to use Windows File Explorer to keep on trying to access the folder until it finally appears.

If you run into problems setting up WebDAV, WebSharing or any other third party network solution, you may wish to post your query on the Pimlical Forum: Yahoo Group: http://tech.groups.yahoo.com/group/Pimlical where there are likely some users familiar with the solution you are using and can help you with any issues.

Syncing via USB Cable using WebDAV

You can also use WebDAV to sync via a USB cable to a device that does not mount as a standard Windows network drive - some power users who do not want to use WebDAV over a network or who do not have a network available may find this useful. The following instructions are from the GooglePlay store:

  1. On your phone go to Settings->Applications->Development and set option "USB debugging".
  2. Connect your phone to your PC using USB cable.
  3. Start adb server. On your PC run command "adb start-server".
  4. adb is a program that you can find on android sdk. Usually you will find it on android-sdk\platform-tools\adb.
  5. Forward needed ports from your PC to your phone. On your PC run command "adb forward tcp:8080 tcp:8080"
  6. With this, any connection in your pc to 127.0.0.1:8080 will be forwarded to your phone in port 8080.
  7. Run WebDAV server in your phone, open settings and in "Network interfaces" select "Loopback (127.0.0.1)"
  8. Start WebDAV server.
  9. In your PC connect your WebDAV client to
  10. http://127.0.0.1:8080 (port might be different, it depends on your WebDAV Server configuration).

Permissions needed:

ADB is part of the Android SDK which you can download from: http://developer.android.com/sdk/index.html. ADB is also very useful for getting good quality screenshots off your Android device.

Sync Anomalies

Sometimes, there can be some unexpected messages in the Sync Log. For example, when syncing the databases, Pimlical looks for duplicate reminders in the Android device or duplicate advances/reminders and if it finds them, it will remove those duplicates and also ensure the database is rewritten on the device even though there are no other recorded changes. In that case, it might report that the databases are identical (because functionally they are identical), but still indicate that the device database was overwritten. Usually the Sync log will advise you of any such anomalies. Also, the simultaneous updating of floating events/reminders on both platforms can sometimes take a couple of syncs to completely resolve. Furthermore, deleted records are maintained in each database for a period of time (based upon the preference DaysBackToKeep) and the deleted records may not necessarily perfectly match up as only those records that are within that number of days participate in the sync process.

Before assuming there is some problem, check the log carefully as it is possible that there is a logical explanation for an anomalous sync log.

Known Android Phone/Device issues:

Issues mentioned here may no longer applicable to later versions of these devices.

Galaxy Nexus - The USB sub-system on this phone has a problem and the device driver ends up hanging Pimlical/Desktop. To avoid this problem all users of Galaxy Nexus will either need to do a power off-on before syncing, or use WiFi for the file transfer (using third party WiFi solution). 

Galaxy Nexus7 Tablet and MTP connection and Windows XP - To get an MTP type connection on Windows XP to work with this tablet, consult this Web page for help: http://forum.xda-developers.com/showthread.php?t=2284125. Usually what is sufficient is to edit the C:\WINDOWS\inf\wpdmtp.inf file as indicated and then go into Device manager, locate the highlighted error and re-install the driver.

HTC Phones - Several HTC phones (and this is true of many other Android devices as well) do not properly indicate when the SD card has been remounted for use by the Android OS (and Pimlical) on the phone. If you are too quick to launch  Pimlical, some odd things can happen (such as an error message saying the SD card is not available, or reading the database but then exiting with an error etc.). To be safe, wait some 10 seconds or so after the last brief message flashes by saying the SD card has been mounted, if you see this happening on your phone.

Sync Preferences: Pimlical/Desktop

There are several preference items specifically relating to the Direct Sync. All of the preferences that relate to DirectSync are specified in P/D with one exception: You must set the IP Address of your desktop device in Pimlical/Android's preference: HttpAddressesForSync.

CurrentLocalCalendar - this is the name of the current local calendar, which by default is PimlicalLocalCalendar. Although not supported by Pimlical/Android in the first release, calendars with different names (and syncing to different categories) are supported with the current Pimlical/Desktop sync routine and Pimlical/Android will be updated shortly after the initial release to support multiple calendars.

LocalSyncDevice - this preference defines the Device path for the sync calendar when mounted under Windows - this is not normally modified by the user as it is set from the Sync Dialog, when the user selects the name of the local calendar (usually, this contains something like F: or G:)

SyncCalendarPrevails - by default, the Sync calendar prevails if date/time stamps match within the specified Threshold (Set by LocalCalendarSyncThreshold preference) or are both null. Set this to false to have the desktop calendar prevail in those circumstances. In theory, this preference should have little effect unless you are syncing for the first time to a calendar created by some other calendar application that did not maintain the date/time stamp of the last modification made to the event.

SaveCreationModificationInfo - this preference should always be set to True unless you are doing something special, as the sync mechanism depends upon each item having a local date/time stamp. Set this to false if you want to avoid saving the creation date/modification date, modifier and creator info in the Android calendar database's tagged note field/extended attributes. However, setting this to false will cause the Direct Sync to fail in properly recognizing which events should prevail.

SyncDefault - set this to a number from 1-3 to set the default synchronization mode (1 = Synchronize, 2 = Desktop Overwrites Device, 3 = Device Overwrites Desktop). The default value is 1 for synchronize. If you pick options 2 or 3, the confirmation checkbox is automatically checked when the Sync Dialog is invoked.

LocalCalendarSyncThreshold - if the difference in modification date/times of two items is LESS than this threshold value, then the two items are considered to be identical. Normally, there would be no reason to change this value. The default value is set to 10 for 10 seconds. Having some threshold avoids having Pimlical think that two events were updated at different times when in fact the date/time stamps only difference by a few seconds.

LastSyncLogFile - this preference specifies the full path to last log file on sync and is normally maintained by Pimlical and not modified by the user.

ApptCategoriesToSync - this preference specifies which Appointment categories are to be synced to the Android device

TaskCategoriesToSync- this preference specifies which Task categories are to be synced to the Android device.

DaysToKeepDeletedRecords - this preference specifies for how many days, Pimlical should keep deleted records in the database prior to deleting them. For DirectSync (and other sync routines) to work properly, it is very important that deleted records not be removed prior to syncing to a device that still has those records. If they get removed prematurely, the sync routine will think the record was missing and instead of deleting it on the platform being synced to, it will restore the undeleted record to the platform that no longer had the record. A value of 7 days (default) should ensure that all syncs have been completed (presuming you sync to all devices at least more frequently than once a week).

Last Revised:26Jul2016