Thursday, November 27, 2008

Bookmark Syncing Between Different Machines

Working on several machine during the course of the day I found myself in the need of the same bookmarks on each of them. Easier said then done. Manual syncing of bookmarks is a pain and due to the sheer amount of entries is almost impossible.

So in order to be able to check all my photography sites on those different machines I was looking for a tool to do the work for me. I ended up using foxmarks which is an add-on to the firefox browser. It is easy to install and easy to set up.

Installation

While using firefox, visit the following link and choose to install the extension:

http://www.foxmarks.com/

Once you have restarted firefox you will be able to go through the setup procedure that will enable you to save your bookmarks as well as your passwords on the foxmark servers. The passwords will be encrypted with the AES-256 algorithm and should supposedly be save. Nevertheless I did not feel quire comfortable to have the passwords save on them foxmark servers and was happy to use the possibility to use my own server to do so.

Using your own server

In the Advanced panel you can specify your own server to save your bookmars and you passwords. You can eiter use an ftp or a webdav account. Foxmark is recommending a webdav account. The bookmarks and the passwords will be saved in a single file each. Simply check the tick box that you want to use your own server and provide the necessary information, being the URL to the bookmarks and the password file. I chose to use the media center of one of my email accounts ( www.gmx.net). If you have already used firefox and their servers, don't forget to change the login information to reflect your webdav account.



Monday, September 22, 2008

Geotagging pictures using geotag

Adding GPS metadata can be an invaluable asset when you travel a lot to different places or you simple would like to know more or less precisely, where you took a certain picture. There are several applications out there to add this GPS metadata to your images most of them not available for Linux users. One nice exception is geotag, a JAVA application that using dcraw and exiftool is even capable of writing the GPS metadata to your raw files.


I have to admit that I am not a friend of JAVA applications. I fancy the fact, that you can run an application on different OS's but I found them to be slow in most cases and under Linux to be rather ugly in every case. But what can you do... if an application does what it is supposed to do and if it free, you do not complain!

geotag is a great application written by Andreas Schneider. It has an active user base and Andreas is rather friendly and helpful if you run into problems with the software. You can download the application and find information and more on the project site on sourceforge.

The easiest way to run the software is via its webstart link:

javaws http://geotag.sourceforge.net/geotag.jnlp


In order to geotag your images, you would load images by going

"File" > "Add images"



Once you have one or more images loaded, geotag will show you a preview for your images (for RAW files you will need dcraw installed) and will allow you to add GPS metadata.

If you do not own a GPS device

Having access to a gps device makes geotagging your images so much easier. But what if you don't?

Even without such a device can you add that GPS metadata to your images. In order to do so, right click on an image and choose

"Show on map" > "this image"

geotag will open a new window in your default we bbrowser showing you a map using the google maps API. The assumed location of the image is indicated using the following symbol



Drag the symbol to the position where you took the image. Use the zoom capabilities to get the position as accurate as possible. If you care to check, you can see, that the position of the symbol is reflected in the geotag window showing you the current position inside the google map window. If your image entry appears in a bold font, the GPS data has been added or updated and can be saved with the image data. You can select multiple images as well add one symbol will be added for each image to a new google maps window. Drawback here, you do not know which symbol belongs to which image unless you check in the geotag window, which image has its GPS coordinates changed when dragging a symbol around in the google maps window.


If you do own a GPS device

Adding GPS metadata inside geotag to your images can be done two different ways. In a two-step-process, you would download your GPS log and convert it (if necessary) to the gpx format. You would than load the gpx file and geotag extracts the GPS information from the file and syncs the GPS data via the timestamps in the GPS trackpoints and the exif data of each image.

1. Load one or more images
2. Adjust the time difference between the GPS data and the time stored in your images. This would be the difference between the GPS time and the Camera time. To do so, right click on an image and choose

"Time difference for image"

For me living in Berlin, Germany this is (during summer time) 2 hours. Agree to adjust the time difference for all images loaded if applicable.

3. Load the gpx file by choosing

"File" > "Load trackpoints from file"

The GPS coordinates will be extracted from the gpx file and added to the images.

4. Save the new meta data to the images by right clicking on an images and choose to save the new location data to either all, selected or this particular image.

You can choose whether geotag should write the GPS meta data to XMP side car files or to the images directly. You can also write the data to a new copy of the file keeping the original file intact. Due to space limitations I choose to write to images directly, so the information can not be lost by accidentally deleting side car files and I don't keep original copies, which would double my space requirements.

Geotag supports gpsbabel as an external tool which allows not only for the conversion of multiple GPS formats but also for the direct access to many GPS devices. To configure geotags access to your device, go to

"File">"Options">"External tools">"gpsbabel"

Make the needed chnages to reflect your setup (for an iBlue 747 that would be protocol "mtk" and device should be "/dev/ttyUSB0"). Make sure that gpsbabel is in your path or provide the full path to the executable otherwise.

To use the GPS data directly from your device, choose

"File" > "Load tracks from GPS"

Depending on the transfer speed of your device and amount of log data, this will take some time and getag will tell you in the end the number of trackpoints it was able to extract from the GPS data from the device. It will automatically add the coordinates to your images that you have been loaded before.

Saving the new data is done accordingly to the manual addition of GPS data, so right click and then choose to save the data to your images.

In addition of GPS coordinates only, you can if you like add location data based on the newly added coordinates using the right click menu. The location data is retrieved from www.geonames.org.


Cheers Juergen

Friday, September 19, 2008

BT747 Beta for Java Phones

With the I-Blue 747 having no display, certain information and functionality is only available to you when you have the device connected to your PC at home. Being out in the field it often would be nice to check on the memory status of the device, download the log file if the device's memory is full and erase the existing log file to make room for new data. For me using the I-Blue for geotagging my pictures, the current position and time would be a very valuable information to have. The latest software from the bt747 hackers comes to the rescue: bt747 for JAVA phones, turning your phone into the display the I-BLUE so very much lacks.

I have talked about the regular bt747 software which runs on various OS's thanks to the JAVA technology. It is available in two versions, new and old with the new one not having all the functionality of the old one. I was thrilled though, when I read today (check it out, the site has much nicer screen shots than I do...) about the latest branch of the software which would allow me to control my I-BLUE using my Java capable mobile phone (I own a Sony Ericson k800i).

The mobile phone application is in beta right now and is not complete yet. According to the website of the project, the following functionality is available:

- Download the GPS log over bluetooth
- Erase the GPS device memory
- Get the memory status:
° Memory used
° Records used
° Records free
- Change log condition settings:
° Time interval
° Speed trigger
° Distance interval
° GPS Fix Period
- Read the GPS position
- Conversion to GPX output format:
° but slow because all fields are written.

So these steps I took to make this work:

1. Download the application from here. The file as of right now to download is BT_J2ME_0_1_48.zip.

2. Unzip the archive:

unzip BT_J2ME_0_1_48.zip


3. Install the included jar file on your mobile phone. I use a special version of the windows application MyPhoneExplorer under wine to ger the application transfered. Read the howto here if you are interested in getting MyPhoneExplorer to work using wine under Linux. If you have it installed, connect to your phone, navigate to the files section of your phone and click the "install Java application" button. In the next windows, navigate to the jar file from the BT_J2ME_0_1_48.zip archive and click OK to upload the file to the phone. IF asked, save it in under the applications folder on your phone.

4. Turn on your phone and activate bluetooth. I did a search for devices before in order to see if my phone would be able to see my I-Blue as a bluetooth device and already had provided the password in order to connect to it. The default password is "0000", them being four zeros. I suppose the bt747 app will ask for the password if the device is not yet known to the phone. If you have problems, just do what I did and do a basic device search in the bluetooth section of the phone and try to connect to the I-BLUE there, before using it in bt747.

5. Turn on the I-BLUE and wait for the device to set up a satellite connection. I found, that without a proper satellite connection the I-BLUE is completely unresponsive to any connection requests from any software that I have used with it so far. So even if I just want to download a log file it has to connect to satellites first which, depending on the weather and your current location, can be quite annoying...

6. Fire up bt747 on your phone, and it will search for nearby bluetooth devices:


Hopefully it will then find your I-BLUE and present you with the option to connect to it on the next screen:


Choose the iBT-GPS device and press OK. This will then give you another screen asking for permission to connect this particular client to the phone.

Once you have successfully connected the GPS device device you will be presented with the application default screen, showing two main menus on the bottom:


The App Menu allows to exit the application and choose some logging options. I only used it to exit the app so far. The Logger Menu is the interesting one as you can actually download log files, erase them, set logging options and check for the status of the device. Very nice is the screen where you can check for you current position and the satellite time. A snapshot with your camera of this screen makes the syncing of image and device time for later geotagging of your images quite easy.

So far this app has some rough edges but the basic functionality is there.

- I downloaded a log file to the phone.
- I was able to see my current position and device time
- I was able to erase log data from the device's memory
- The phone becomes unresponsive when I choose to have the device's status displayed. This might be due to the fact though that I am rather impatient.

So far so good! I very much recommend this app to have on your hopefully java capable phone!

Cheers Juergen




Sunday, August 31, 2008

Using the I-BLUE 747 with bt747

The application bt747 is a GPS control software for several GPS datalogger including the I-BLUE 747. It is an opensource program written in Java and it runs on Windows, Palm, WinCE, Linux and on the Mac.

Running Java programs on OpenSuse can tricky sometimes. "Regular" applications are fine but if you need to install Java extensions to which you do not find a supported OpenSuse package you might fail. I had to face this fact already on another occasion.

The solution is to take the plunge:

  1. deinstall all java packages
  2. install java from sun
  3. install the needed Java extensions
  4. download and install bt747


For bt747 I had to take this route on OpenSuse 11.0. Your mileage may vary, so just give it a go on your distro.

Installation instructions for OpenSuse 11.0

1. Deinstall all Java packages

rpm -qa | grep java | xargs rpm -e


2. Download the generic Java package from Sun

jre-6u7-linux-i586-rpm.bin

install the package (execute as root)

>sh jre-6u7-linux-i586-rpm.bin


3. Install the rxtx Java extension

RXTX is a native lib providing serial and parallel communication for the Java Development Toolkit.

rxtx-2.1-7-bins-r2.zip

The file INSTALL tells us what to do, so as root do this:

>cp rxtx-2.1-7-bins-r2/RXTXcomm.jar /usr/java/jre1.6.0_07/lib/ext/
>cp rxtx-2.1-7-bins-r2/Linux/i686-unknown-linux-gnu/librxtxSerial.so /usr/java/jre1.6.0_07/lib/i386/


The last thing you will have to do is to add the users that are supposed to use bt747 to the "uucp" group on your machine. This is supposedly needed to make lock files work.

On OpenSuse use yast2 to add users to the group.

4. Install bt747

Download the latest installation package from here.

Create a directory to hold the installation files, as the archive does not have subdirectories. I hate it when packagers do that...


>mkdir bt747
>cd bt747
>unzip /PATH/TO/BT747_1.XX_XX_full.zip

To start the application do this:

>sh run_j2se.sh
This script will start the new version of the application, which looks nice but has to be considered beta or even alpha at this moment.

>sh run_rxtx.sh
This script will start the older version which looks really awful but works well.

So much for now. Stay tuned to find out how to use bt747.

Cheers Juergen

Friday, August 29, 2008

Using the I-Blue 747 with gpsbabel

Gpsbabel is the swiss army knife when it comes to GPS devices. With the application you can read waypoints, tracks and routes from a great number of devices in many different formats. At th same time you can convert between all those formats as well as manipulate the data in the proceedings.

The I-Blue 747 is a mtk loging device. Rather than storing a gpx formated text file with the GPS information it does store that data in a binary file format. It is able to read the binary mtk information and write it to any of the supported gps data formats such as the popular gpx as well as the kml file being used by Google Earth.

1. Installation of gpsbabel
You can try to install gpsbabel using the software package manager that comes with your favorite Linux distro. When doing so under OpenSuse 11.0 it did install an oder version of gpsbabel which did not recognize the mtk file format. So I went to the gpsbabel website and downloaded a precompiled i386 binary which I then did install:

>rpm -Uhv gpsbabel-1.3.5-0.i386.rpm

2. Reading the data from the device
Most GPS data programs support the gpx file format. If you like to use the GPS data to add it as meta data to your images from a shoot this is the way to go in most case. In order to read from the device you will have to connect it via the USB mini cable and switch to logging mode. In the following example we will read the data and convert it on the fly to a gpx data file:

>gpsbabel -t -w -i mtk -f /dev/ttyUSB0 -o gpx -F OUTFILE.gpx

If you would like to do some houese keeping at the same time you can delete the data you have just read from the device, freeing the memory and have it spring clean for the next trip or shoot:

>gpsbabel -t -w -i mtk,erase -f /dev/ttyUSB0 -o gpx -F OUTFILE.gpx

If you need the same GPS data in different file formats, you can add another output option along with another output file. The next example will read the GPS data and convert it to a gpx file for geotagging. The second output section will create a kml file with which the trip can be viewed using google earth:

>gpsbabel -t -w -i mtk,erase -f /dev/ttyUSB0 -o gpx -F OUTFILE.gpx \
-o kml -F OUTFILE.kml

So there you go. I myself have banged together a little bash script that will download the data add a time stamp and save the data in a defined directory on my machine:

#!/bin/bash
#Read the matk binary data from mtk device, such as an I-BLUE 747.
#Convert the data to gpx and kml format.
#Store the data in $HOME/Documents/gps adding a time stamp
#and a unique file identifier by adding the process ID of
#the script ($$) to the file name.

BASE=$HOME/Documents/gps
DATE=`date +%Y%m%d`


gpsbabel -t -w -i mtk,erase -f /dev/ttyUSB0 -o gpx -F $BASE/GPS_$DATE_$$.gpx \
-o kml $BASE/GPS_$DATE_$$.kml


Feel free to use and or modify the script to your personal needs. If the script burns down your house or kills your cat I am not to be hold responsible :-) You the script at your own risk!

Cheers
Juergen

Thursday, August 28, 2008

Datalogger 2.5 and the I-Blue 747 under wine

The I-Blue 747 GPS data logger is recognized as a serial device only and not as a USB mass storage device. Therefore the GPS data can not be accessed directly on the device. One way to get to the GPS data is via the datalogger software that comes with the device.

The software comes on a mini CD in the device package or can be downloaded from the transcend website.

Follow the following steps to install the software on your linux box:

1. Make sure that you have installed wine on your system. Please refer to your distro documentation to find out how to do this. For OpenSuse

>zypper install wine
executed as root will do the trick. Personally I do use the latest wine from cvs (version 1.1.3) provided by the OpenSuse build service on a daily basis.

2. Unzip the TsiSetup.zip archive

>cd path/to/downloaded/file >unzip TsiSetup.zip

3. Install the software

>cd TsiSetup
> wine DataLog.exe


4. Prepare wine for the new serial device

Connect the I-Blue 747 to a USB port using the provided USB mini cable. If you use a recent distro the device will be automatically detected, the appropriate kernel module (cp2101) will be loaded and a new serial device be created (/dev/ttyUSB0):

>dmesg
hub 2-0:1.0: unable to enumerate USB device on port 4
usb 3-2: new full speed USB device using uhci_hcd and address 2
usb 3-2: configuration #1 chosen from 1 choice
usb 3-2: New USB device found, idVendor=10c4, idProduct=ea60
usb 3-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 3-2: Product: CP2102 USB to UART Bridge Controller
usb 3-2: Manufacturer: Silicon Labs
usb 3-2: SerialNumber: 0001
usbcore: registered new interface driver usbserial
drivers/usb/serial/usb-serial.c: USB Serial support registered for generic
usbcore: registered new interface driver usbserial_generic
drivers/usb/serial/usb-serial.c: USB Serial Driver core
drivers/usb/serial/usb-serial.c: USB Serial support registered for cp2101
cp2101 3-2:1.0: cp2101 converter detected
usb 3-2: reset full speed USB device using uhci_hcd and address 2
usb 3-2: cp2101 converter now attached to ttyUSB0
usbcore: registered new interface driver cp2101
drivers/usb/serial/cp2101.c: Silicon Labs CP2101/CP2102 RS232 serial adaptor driver v0.07


Your wine setup is not aware of the new serial device, as the four serial ports com1 to com4 are connected to /dev/ttyS0 to /dev/ttyS3. You will have to remove one of the existing links and add a new one pointing to /dev/ttyUSB0:

>cd ~/.wine/dosdevices >rm -rf com2 >ln -s /dev/ttyUSB0 com2

Use one of the com ports don't matter which one. Pick one you don't use for anything else...

5. Start the application

Switch the device switch to the log position. And then start the datalogger application:

wine ~/.wine/drive_c/Program\ Files/LogTool/DataLog/DataLog.exe

You will be presented with a "Configuration" tab in which you will have to choose the com port you connected the /dev/ttyUSB0 to from the drop down list:



In my example that would be "com2". Click the "Connect" button to let the software talk to the device:

Under the menu entries on the left you can setup the device. You can specify GPS data to be stored, data formats, Save intervals and methods, and the like.

Under the "Satellite Information" tab you will be able to access the current inforamtion the device is currently pulling from the connected satellites:


As nice as all this is, the application under wine has one rather significant drawback. You can not get to your stored GPS data. Whenever I try to access any data on the device using the datalogger under wine, I miserably failed. The download window pops up and stays there until I kill the whole application using xkill. There was a report on how to use the applcaiton udner wine which is no longer available.

So if anybody is using the datalogger app under wine successfully. I would be happy to receive some pointers on what step you took to make this work.

Geotagging Your Images under Linux using the I-Blue 747

Knowing where you shot certain images can be of some value. GPS devices dropping in price and adding features while getting more precise will help you add that location meta data to your images.

I guess you have been there one way or the other. You went on a day trip and took hundreds of pictures. Getting back home the images file get transferred to the computer and sit there for some time. After a while you finally get to the images and start wondering where exactly did you take those pictures? Looking at a handful you might be able to remember. If you look and a couple hundred, you're screwed...

Geotagging will help you here. While being on a shoot, you carry around a GPS device, that will save the location data in defined time intervals. The logged location data can later be connected via the time stamp with your images.

I had been thinking for a while buying such a device but could be bothered choosing one. Browsing my regular photography forums I read about a new device, called the I-Blue 747, which supposedly sport more memory than others, is reasonably priced and was supposed to be a good buy, I went to ahead to eBay and got myself one of them I-Blues.

One of the main differences to many other GPS devices is, that the I-Blue does not present itself as a USB mass storage device when connected to your machine. Instead the GPS data can only be accessed using the software that comes with the device. Fine if you are on Windows or on a Mac but not so great if your are using Linux.

But low and behold there are quite some alternatives available. And in the coming days I will try to explore some of them:

1. The original I-Blue windows software using wine
2. bt747, a java application
3. gpsbabel
4. mtkbabel, a perl program
5. directly using the GPS information in geotag, a java geotagging application

So stay tuned to get some insight into how to use the I-Blue and get the most out of it under Linux.