Garmin Points of Interest (.gpi) (garmin_gpi)
Prev | Chapter 3. The Formats | Next

## Garmin Points of Interest (.gpi) (garmin_gpi)

This format can...

- read and write waypoints

This format has the following options: alerts, bitmap, category, hide, descr, notes, position, proximity, sleep, speed, unique, units .

The format garmin_gpi supports the binary POI (.gpi) files that are useable on newer Garmin GPS receivers. See garmin_poi for additional information about Garmin's own Poiloader program. Garmin POI-Loader is the standard application that creates GPI files with all possible features.

The layout of GPI files isn't documented and our module was created via reverse engineering. If you get a problem on reading or writing a GPI file, please provide that file (mailto:gpsbabel-misc@lists.sourceforge.net).

At this time we don't support special features as "Tour-Guide" or links to sounds and pictures.

### Important

Creation timestamp issue: See the option sleep !!!

This module does not support direct transfer of .GPI files to receivers in Garmin protocol mode. For units like Nuvi, Zumo, or Streetpilot, just choose a file that's on the drive where your GPS is mounted. For units like the X series (GPSMap 60CSx, GPSMap 60Cx, Legend Hcx, etc.) you must explictly put the unit in mass storage mode or mount the memory chip in an external reader and transfer the file directly.

Example 3.9. Command showing garmin_gpi output example

`gpsbabel -i gpx -f "My Points.gpx" -o garmin_gpi,category="Nice Restaurants",bitmap=restaurant.bmp,notes -F "My Points.gpi"`

### `alerts` option

Enable alerts on speed or proximity distance.

Because speed isn't a real member of a normal waypoint, you can put the speed values into the waypoint names. "Point@30" will result in a speed value of 30. By default we assume these values are in kilometers per hour.

Proximity distance is also supported by GPX, Garmin GDB, OZI Explorer, CompeGPS and Universal CSV.

`gpsbabel -i gpx -f "warnings.gpx" -o garmin_gpi,alerts=1 -F "warnings.gpi"`

### `bitmap` option

Use specified bitmap on output.

The bitmap (BMP) should be 24x24 (or smaller) and can be in RGB-colors (24- and 32-bit) or 8-bit indexed color format.

If you're starting from images in another format, you may need to use another tool like Gimp or ImageMagick's convert to get the imaga into oen of the above formats to avoid errors about "Unsupported color depth".

Not all devices can support all color depths. GPSBabel (and its developers) have no way of knowing what is supported on any given model so some experimentation may be necessary on your part. It was reported that a Nuvi 3790, for example, will read the POIs only if they use 8BPP.

A color value of 0xFF00FF (blue=255, green=0, red=255), also called "Magenta", can be used for transparent areas.

`gpsbabel -i gpx -f "My Points.gpx" -o garmin_gpi,bitmap="tux.bmp" -F "My Points.gpi"`

### `category` option

Default category on output.

With this option you can specify the category which is primary visible on the device (default is "My points").

`gpsbabel -i gpx -f "My Points.gpx" -o garmin_gpi,category="Best Restaurants" -F "My Points.gpi"`

### `hide` option

Don't show gpi bitmap on device.

For a large list of points (or whyever) it can be useful when no bitmaps are displayed on device. With this option no bitmap is stored and displayed.

`gpsbabel -i gpx -f "My Points.gpx" -o garmin_gpi,hide -F "My Points.gpi"`

### `descr` option

Write description to address field.

The GPI address field is often visible in lists on the device. Use this option if you want to see the waypoint description (which can be an address too) in this lists.

`gpsbabel -i gpx -f "My Points.gpx" -o garmin_gpi,descr -F "My Points.gpi"`

### `notes` option

Write notes to address field.

The GPI address field is often visible in lists on the device. Use this option if you want to see the waypoint notes (which can be an address too) in this lists.

`gpsbabel -i gpx -f "My Points.gpx" -o garmin_gpi,notes -F "My Points.gpi"`

### `position` option

Write position to address field.

The GPI address field is often visible in lists on the device. Use this option if you want to see the waypoint position (coordinates) in this lists.

`gpsbabel -i gpx -f "My Points.gpx" -o garmin_gpi,position -F "My Points.gpi"`

### `proximity` option

Default proximity.

When no proximity data is available in the source input, GPSBabel uses this as the default proximity value. The parameter has to be in meters, or, when units=s specified, in miles. alerts are automatically enabled.

Example 3.10. Read GPX file, create GPI to alert when you're 1/2 mile from a speed camera.

`gpsbabel -i gpx -f "SpeedCameras.gpx" -o garmin_gpi,units=s,proximity=0.5 -F "SpeedCameras.gpi"`

Its also possible to append a specific distance unit to the parameter.

`gpsbabel -i gpx -f "SpeedCameras.gpx" -o garmin_gpi,proximity=500m -F "SpeedCameras.gpi"`

Table 3.2. Supported distance units (garmin_gpi)

Unit | Description
--- | ---
fa | Fathoms
feet | Feet
ft | Feet
km | Kilometers
m | Meters
mi | Miles
nm | Nautical miles

### `sleep` option

After output job done sleep n second(s).

The Garmin units seem to use the creation timestamp of GPI files for internal purposes. In other words, if you load GPI files with same creation timestamp on your device, strange things will happen, such as having missing or repeated POIs. With the sleep option, GPSBabel waits a given number of seconds after the GPI file was written.

In the normal case of using GPSBabel from the command line or from the GUI, the chance of creating files with the same timestamp is in the nearly ZERO. In scripts or batch files where you are writing multiple files - even from different GPSBabel instances - the odds of this happening is rather good. The sleep option forces GPSBabel to wait after creating a file to ensure the timestamps are unique. Values are specified in seconds and can be 1 or more.

`gpsbabel -i gpx -f "SpeedCameras.gpx" -o garmin_gpi,sleep=1 -F "SpeedCameras.gpi"`

### `speed` option

Default speed.

When no speed data is available in the source input, GPSBabel uses this as the default speed value. The parameter has to be in kilometers per hour, or, when units=s specified, in miles per hour. alerts are automatically enabled.

`gpsbabel -i gpx -f "SpeedCameras.gpx" -o garmin_gpi,units=s,speed=30 -F "SpeedCameras.gpi"`

Its also possible to append a specific speed unit to the parameter.

`gpsbabel -i gpx -f "SpeedCameras.gpx" -o garmin_gpi,speed=30mph -F "SpeedCameras.gpi"`

Table 3.3. Supported speed units (garmin_gpi)

Unit | Description
--- | ---
km/h | Kilometers per hour
kmh | Kilometers per hour
kph | Kilometers per hour
kt | Knots
knot | Knots
m/s | Meters per second
mps | Meters per second
mi/h | Miles per hour

### `unique` option

Create unique waypoint names (default = yes).

Don't create unique names sample:

`gpsbabel -i gpx -f "My Points.gpx" -o garmin_gpi,unique=0 -F "My Points.gpi"`

### `units` option

Units used for names with @speed ('s'tatute or 'm'etric).

Sample command tells GPSBabel to handle speed values in miles per hour: `gpsbabel -i gpx -f "My Points.gpx" -o garmin_gpi,units=s -F "My Points.gpi"`

Prev | Up | Next
Garmin POI database (garmin_poi) | Home | Garmin serial/USB protocol (garmin)