I've been working on a Raspberry Pi 3 B car computer project using Kodi 18 and the official touch display with Mesa OpenGL (fkms for now) driver. I've researched and tested a couple GPS navigation solutions for the Pi.
I've tried the CarPC project (after updating outdated Navit configs, the Kodi CarPC theme, Kodi navigation addon and more so that it would work on a current Raspbian and Kodi 18 from git). I do not like it very much for a few reasons. The code and configs are outdated. The availability of updates and built-in update system (scripts) is inflexible and generally concerning to me from a long-term perspective. The latest versions of Navit (the released 0.5.0 and git development versions) seem to perform terribly slow (freezes/hangs, honestly, it's unusable) when launched from the Kodi addon. Navit seems to work fine in a standard X session.
After being disappointed with the overall functionality and performance of the CarPC system (Kodi with Navit) and not wanting to debug it further, I decided to see if there were other options. I found the Seven Ways (7ways) application which seems to work fairly well. It uses a .7w map file format (typically derived from OpenStreetMap data) and it can be tricky to convert map data in other formats (requires obscene amounts of RAM), but it is possible to download converted and reasonably up-to-date map files for most locations (when a certain website is reachable). The address search functionality does not work well. I don't think the source code is available and they only offer a precompiled "ARM" (no further specifics regarding compatibility) download. Documentation is sparse. All that aside, it seems to run fairly well for me with a USB GPS (VK-162).
To get 7ways to launch from Kodi, I created a small shell script and used the Kodi addon named Advanced Emulator Launcher. This Kodi addon is mainly focused on integrating ROMs and emulator launchers in to Kodi, but you can also run other applications using it. So I created a launcher to run the following script and added the launcher to the Kodi "Favourites":
Code: Select all
#!/bin/sh # Check if 7ways is running if [ "$(pidof 7ways)" ] then # If it is running, then switch to the 7ways window /usr/bin/xdotool search --name 7ways windowactivate else # If is not running, then execute it cd /home/pi/software/7ways ./7ways & fi exit 0
UPDATE: Preventing the music from being stopped when running a launcher (for 7ways in this case) is easily configurable in the Advanced settings for Advanced Emulator Launcher. The option is labeled "Action on Kodi playing media" which can be set to Stop, Pause or Let Play. Let Play does the trick.
I suppose I should also see if Navit can be integrated in the same sort of way (using AEL) to see if it performs any better using it this way. I'd probably need to add a custom button to the Navit interface to get back to Kodi.
UPDATE 2: Here's a similar way to integrate Navit into Kodi which seems to work OK.
Code: Select all
#!/bin/sh # Check if Navit is running if [ "$(pidof navit)" ]; then if [ "$1" = "minimize" ]; then # If it is running and minimize arg # was passed then minimize the window xdotool search --desktop 0 --name "Navit" windowminimize else # Otherwise switch to the Navit window and maximize it /usr/bin/xdotool search --desktop 0 --name "Navit" windowactivate /usr/bin/xdotool search --desktop 0 --name "Navit" windowsize 100% 100% fi else # If Navit is not running, then execute it navit & fi exit 0
Code: Select all
<img src='gui_minimize' onclick='navit.spawn("/usr/local/bin/navitctl","minimize")'><text>Minimize</text></img>
https://raw.githubusercontent.com/ktb83 ... nimize.svg
https://raw.githubusercontent.com/ktb83 ... marine.svg
https://raw.githubusercontent.com/ktb83 ... urnish.svg
https://raw.githubusercontent.com/ktb83 ... _handg.svg
https://raw.githubusercontent.com/ktb83 ... owling.svg
I also checked out a project that doesn't use Kodi and instead uses a web interface with MPD backend for music in a kiosk manner. That project seems to require a mobile data connection for all functionality and doesn't seem to have full navigation with turn by turn directions. It seems to just track where you are and have been.
So, I'm wondering what solutions others have come up with and are using successfully.
Thanks for reading,