I have been using the Raspberry Pi 2 for quite some time and now have a project where I wanted to make it location aware through the addition of a GPS module. Since USB ports are limited, and i also had a UBlox NEO-6m-001 device I thought it made sense to connect this to the device through the inbuilt hardware UART pins to free up the USB ports.
Since i found information spread across a few places I thought it might be useful to include my workings within this document so that others may use this to set their system up if they want to emulate a similar thing. Beyond GPS location, I have also integrated the system with NTP (Network Time Protocol) to allow the device to update it's own time should there be no internet access which is handy given the raspberry pi does not have a real time clock.
*WARNING, this tutorial requires you to connect to the GPIO pins which can destroy your Raspberry pi, I take no responsibility for any damage that may occur*
By default, the Raspberry Pi is set to use the Hardware UART as a serial console output and if you connect the GPS to that pin then it will crash so first we need to disable the Console output to the hardware UART pins, this is done by the below;
This was set up on Debian Jessie, so other operating systems and versions might behave differently. It was also run on a Raspberry Pi 2, these instructions will not work for a Raspberry Pi 3!. Another note, if you get errors on your Raspberry Pi about SysRq : HELP check to make sure you have removed the console references in the /boot/cmdline.txt file, and the /etc/inittab file and finally that the serial-getty service has been stopped and disabled.