Run gpsd inside a Home Assistant OS container, exposing GPS data over TCP port 2947 for any client on your LAN.
Any USB GPS receiver that presents a serial port. Common chipsets:
- u-blox (e.g. VK-162, BN-220)
- SiRF Star (e.g. GlobalSat BU-353)
- MediaTek (e.g. Adafruit Ultimate GPS)
- Silicon Labs CP2102N USB-to-UART bridges
The device typically appears as /dev/ttyUSB0 or /dev/ttyACM0.
- In Home Assistant, go to Settings → Add-ons → Add-on Store.
- Click the ⋮ menu (top-right) → Repositories.
- Add the repository URL:
https://github.com/leo-stan/ha-addon-gpsd - Find GPSD in the store and click Install.
- Configure the add-on (see below) and click Start.
| Option | Default | Description |
|---|---|---|
device |
/dev/serial/by-id/usb-... |
Path to the serial GPS device (use /dev/serial/by-id/ for stability) |
baud |
9600 |
Baud rate for the serial connection |
gpsd_options |
"-n" |
Extra gpsd flags (e.g. -n to poll on open) |
Option 1 — HA UI (easiest):
- Go to Settings → System → Hardware
- Click All Hardware (bottom of the page)
- Search for your GPS device (e.g.
CP2102,ttyUSB, orttyACM) - Copy the
/dev/serial/by-id/...path
Option 2 — Terminal / SSH:
ls -l /dev/serial/by-id/Always prefer the /dev/serial/by-id/... path — it is stable across reboots and doesn't change if you plug in other USB devices.
device: /dev/serial/by-id/usb-Silicon_Labs_CP2102N_USB_to_UART_Bridge_Controller_2c109c3eadf4ef118da5c41b6d9880ab-if00-port0
baud: 9600
gpsd_options: "-n"From another machine on the same network (requires the gpsd-clients package):
# Interactive GPS monitor
cgps -s <HA-IP>:2947
# Raw NMEA/JSON stream (5 sentences)
gpspipe -w -n 5 <HA-IP>:2947Replace <HA-IP> with the IP address of your Home Assistant instance.
- Verify the device is plugged in and detected:
ls /dev/ttyUSB* - Try the
/dev/serial/by-id/path instead - Check the add-on configuration for typos in the device path
- The add-on already requests device access. If you changed the device path, make sure it is also listed in
config.yamlunderdevices:.
- Make sure the antenna has a clear view of the sky
- Some receivers need a cold-start time of 30–60 seconds
- Check baud rate matches your receiver (most default to 9600)
- Look at the add-on logs for gpsd output
Once the add-on is running, you can connect it to the built-in GPSd integration to get GPS entities in Home Assistant (latitude, longitude, fix mode, etc.).
- Go to Settings → Devices & Services → Add Integration
- Search for GPSd and select it
- Enter the following:
- Host:
127.0.0.1(localhost) - Port:
2947
- Host:
- Click Submit
The integration will create a sensor.gpsd entity with attributes including:
- Latitude / Longitude
- Altitude
- Speed
- Fix mode (no fix, 2D, 3D)
You can use these in automations, device trackers, or dashboards.
MIT – see LICENSE.