So, here am I. It's been a week since I bought the GlobalSat SiRF IV BT-354S4 and finally, after some days of struggling to make it work, I realised I MADE A BAD CHOICE NOT TO READ THE GPSD FORUMS.

Your possible problem; NO FIX/ BAD FIX
you order

$ gpspipe -r -n 10
$ cgps
$ gpsmon -n

to test if your receiver works and the terminal results only to this
{"class":"VERSION","release":"3.22","rev":"3.22"," proto_major":3,"proto_minor":14}
{"class":"DEVICES","devices":[{"class":"DEVICE","path":"/dev/ttyUSB0","activated":"2021-04-23T14:35:07.390Z","native":0,"bps":9600,"parity":" N","stopbits":1,"cycle":1.00}]}
{"class":"WATCH","enable":true,"json":false,"nmea" :true,"raw":0,"scaled":false,"timing":false,"split 24":false,"pps":false}

But the device's light is blinking what can I do? Well assuming that you have searched your way here to find a solution I assume that you have took all the necessary steps for the installation and configuration of gpsd with your device(if not, I will explain further, later, below). The solution is: patience. YES, patience, no jokes; wait at least 15-20 minutes for stable fix. I'll explain below.

This thing does not work like your WiFi in your home, where for example, you plug the 802:11 adapter in your PC/Laptop/Potato and it takes like 10 seconds to scan, find and connect to a network.

GNSSs receivers, (especially our ☭ device, the GPS GlobalSat SiRF IV BT-354S4) works with the satellites.
At least 4 satellites are needed for a precise location within 5-8 meters. The more satellites the better. A lot of satellites, can get your exact position within inches.
Of course there is not only that GlobalSat device. There are many systems and devices.
In this link you can see which devices are recommended, bad, broken and more in gpsd official website.

Here are the satellite systems that the receivers work with; some work with all together, some with one or the other and some with a single one

The Global Navigation Satellite System (GNSS)
Global Positioning System [GPS] (United States)
GLObal NAvigation Satellite System [GLONASS] (Soviet Union/Russia) [Not to be confused with GNSS]
Galileo (European Union)
BeiDou (China)
Quasi-Zenith Satellite System [QZSS] (Japan)
Indian Regional Navigation Satellite System [IRNSS] (India)

Technical information and instructions for GlobalSat SiRF IV BT-354S4

gspd quote
"Gary Miller rates the device "DO NOT EVER BUY ONE!"

But it is not that terrible. Its cost is around $34, works with GPS and has a SiRFStar IV chipset, it is a low powered device and does not support PPS. Can I still use it? Yes, you can.

First of all, if you have already connected your receiver to the computer and check it with

$ sudo dmesg | grep tty

you should get
[ 0.053818] printk: console [tty0] enabled
[ 11.009904] systemd[1]: Created slice system-getty.slice.
[ 11.443889] usb 1-1: pl2303 converter now attached to ttyUSB0
[ 14.191072] pps pps0: source "/dev/ttyUSB0" added
[ 1898.137248] pps pps0: source "/dev/ttyUSB0" added
*I assume you are also ttyUSB0, if not, then you should replace the USB0 with your device in the commands below

To install gpsd
Follow the orders as written

$ sudo apt-get update

$ sudo apt-get install gpsd gpsd-clients

if already installed, just ignore it those two commands and jump to the enabling process
if you think you played enough with it and you think you may have broken it, uninstall it and reinstall it with the commands below

$ sudo killall gspd

$ sudo apt purge gspd gspd clients

$ reboot

after that, install it with the commands above

Enable the gpsd daemon

After installationwith the device connected, gpsd recommends you to use root for its operation; not user, not sudo,
Follow the orders as written

$ sudo su

Now edit the configuration properly in order to allow our device to play with gpsd. I shall show you mine and I suggest you please follow the instructions in the table


$ nano /etc/default/gpsd

delete everything in there and paste the whole content from the table below.
# Devices gpsd should collect to at boot time.
# They need to be read/writeable, either by user gpsd or the group dialout.


# Other options you want to pass to gpsd
# Automatically hot add/remove USB GPS devices via gpsdctl
*The # symbol turns a sentence into a comment
press CTRL+X then Y to save and Enter

$ gpsd /dev/ttyUSB0
the daemon is activated

now your device will be operational if you give it some time, I quote gpsd website "the device takes a lot longer to cold-start than GlobalSat claims 45 of 45 seconds"

I have noticed that my device needs about 2-5 minutes for a warm start. Of course your location plays a big role, for example if you are underground or in a basement, the receiver is trying to fix on a satellite and the search for a signal can last much much longer.

gpsd quote
"If you are starting a GPS for the first time, or after it has been powered off for more than a few weeks, this is a 'cold start'; it needs to get a new satellite almanac to do its job. The satellites broadcast this information very slowly (at 50bps) on a fixed schedule, and it can take up to 20 minutes."

So if you do

$ gpspipe -r -n 10

and you get
{"class":"VERSION","release":"3.22","rev":"3.22"," proto_major":3,"proto_minor":14}
{"class":"DEVICES","devices":[{"class":"DEVICE","path":"/dev/ttyUSB0","activated":"2021-04-23T14:35:07.390Z","native":0,"bps":9600,"parity":" N","stopbits":1,"cycle":1.00}]}
{"class":"WATCH","enable":true,"json":false,"nmea" :true,"raw":0,"scaled":false,"timing":false,"split 24":false,"pps":false}
the daemon is still running, the device is operational and you haven't done anything wrong, you must wait for the satellite to lock on your position

after 5-20 minutes, depending on type of start and the position is fixed, it will result to your location's lat/long
{"class":"VERSION","release":"3.22","rev":"3.22"," proto_major":3,"proto_minor":14}
{"class":"DEVICES","devices":[{"class":"DEVICE","path":"/dev/ttyUSB0","driver":"SiRF","subtype":"GSD4e_4.1.2-P1_RPATCH.10- 04/25/2019 115;GSD4e","activated":"2021-04-23T16:32:20.275Z","flags":1,"native":1,"bps":38400 ,"parity":"N","stopbits":1,"cycle":1.00}]}
{"class":"WATCH","enable":true,"json":false,"nmea" :true,"raw":0,"scaled":false,"timing":false,"split 24":false,"pps":false}
$GPGSV,3,1,12,18,69,081,42,29,22,184,31,23,28,135, 26,26,70,206,35*7D
$GPGSV,3,2,12,10,10,160,31,20,39,082,40,27,33,276, 00,16,64,286,36*72
$GPGSV,3,3,12,05,11,030,20,31,08,201,20,07,06,334, 00,124,27,162,00*47
$GPGGA,143234.00,5016.8008,N,00711.0291,E,1,09,1.0 0,212.06,M,45.639,M,,*63
$GPRMC,143234.00,A,4116.5388,N,02711.0291,E,0.2000 ,0.000,230421,2.2,E*63
$GPGSA,A,3,18,29,23,26,10,20,16,5,31,,,,4.6,1.0,4. 3*02
meaning that the device is running properly.

you can also try

$ gpsmon -n
for a more detailed table of information

After aquiring your position, you can use your device with kismet, and wardriving, with viking and almost everything else.
This concludes my post as a hand of help. I am not an expert or a professor on IT, networking or hardware or anything else, I am just a fella that has as a hobby to screw with machines and trying to understand them as much as possible.

Thank you for reading, I'd like to read your comments or questions.
Have a nice day!