You're not using the M8T sawtooth correction, right? (Since Lars' GPSDO doesn't utilize it.)
Previously you posted that you use the "UBX-CFG-NAV5" message - the implication seems to me to be that that message automatically sets the elevation mask in some way. Usually that wouldn't leave you with only a few satellites but if more than half of the sky was already blocked, sure, I could see you ending up with only a few.
The Skytraq/Navspark units are significantly more sensitive than the Ublox GPSs. maybe in your situation you would do better with one of them. They are so sensitive that for me, they work indoors without needing to be near a window at all.
I realise this is just over four months late but I felt impelled to give that statement about sensitivity some context. I've already read the whole of this thread two or three weeks earlier and was reading it again to refresh my memory since it's been so revealing a discussion on the subject of DIYing a GPSDO. There are still several points I only have a vague grasp on but I'm hoping to learn more by osmosis.
About two months back, I got a sudden and desperate urge to create an accurate 10MHz reference to substitute for the currently un-receivable WWV broadcasts I'd previously used nearly three decades ago as a calibration source so landed up buying a cheap u_Blox NEO M8N based Arduino/Rpi module which I could use immediately to provide a 10MHz calibration signal. As a substitute for the WWV 10MHz broadcasts, it's a vast improvement in spite of the jitter from dividing a 48MHz TCXO down to 10MHz (the least of the issues with disciplining an XO) and the varying ticks as it adjusts the PPS to stay synchronised to GPS (UTC) time by skipping/adding one full 20.8333ns clock period.
Such a polluted 10MHz signal whilst unusable as an external oscillator reference for comms and test gear, more than adequately serves as a calibration reference by which to trim internal clock oscillators. In my naivety, I'd assumed that the 48MHz TCXO in the u-blox module was simply being continually adjusted to hold it exactly on frequency, only to eventually figure out the horrible truth of the matter by careful comparison with a cheap AWG driven by a 0.1ppm TCXO that could keep the drift down to one or two ppb per half hour or so (stable enough to observe what was
actually happening to the PPS when programmed to a jitter free 8MHz), using the signal generator to trigger the 'scope to reveal the jumps in phase of the 8MHz PPS signal.
Such corrective jumps can be heard as individual pulses on an HF radio tuned to the fundamental in NBFM mode and also on the third harmonic at 24MHz where these pulses are then three times the amplitude. Setting the PPS to 100KHz and listening to the 99th harmonic seems to produce a click amplitude similar to the 8MHz PPS signal as one might expect. However, the level of the click modulation disappears into the noise when listening to the 100KHz PPS frequency itself.
Prior to that discovery, I'd had high hopes of being able to clean up the PPS signal using a 3N502 clock multiplier chip to multiply the 4MHz PPS to a nice clean, jitter free 10MHz. However, that random dropping/adding of a clock pulse to correct in a method that parodies the "Leap Second" UTC correction mechanism every 5th of a second to every ten seconds or longer, rather put paid to that scheme. The result being that I
do now see the point of all this extra complexity of an add on VCOCXO with startling clarity.
The truth of the matter is that the starting point of any GPSDO should be the VCOCXO with the GPS module and associated paraphernalia as the "After market add-on".
Anyhow, that explains my interest in this thread but to get back to the observations made regarding GPS receiver sensitivity, I feel I should add my own observations just to provide the wider context. Whilst the M8N may not have been an optimum choice for a GPSDO project, it does appear to compare well against the old and once well regarded Navman Jupiter T's 10KHz jitter performance (as best as I can make out from the data sheet at any rate).
That 20.8333ns jitter will always be present regardless of whatever frequency the PPS line has been programmed to emit. The benefit of choosing a lower frequency is that this jitter represents a much smaller phase modulation (75 milli degrees at 10KHz versus 75 degrees at 10MHz). Whether this is any help towards reducing the effect of this "Leap Cycle" correction on the final PLL control signal, I'm not at all sure. TBH, any benefit is most likely simply going to be down to the longer time constant required with such a large division ratio in the PLL (the resulting 7.5 microdegree phase shifts on the 1Hz PPS seem to be just as big a problem). In short, it seems to me that it's this 20.8333ns random jitter that mandates long time constants in the PLL control driving the Vfc pin of the VCOCXO to filter out the effect of such phase jumps on the VCOCXO's output.
All that aside, whilst I was discovering the reason for the module's attached patch antenna proving to be a mere ornamental adornment[1], I discovered that, after the patch-ectomy (and removal of the microscopic LNA chip), the module could still retain lock on half a dozen or more satellites for several minutes after disconnecting the external active antenna (or the original patch antenna I'd now re-purposed with a 15cm flylead for use as a plug in passive test antenna)
Quite frankly, the module didn't need the help of a LNA chip to use the attached patch antenna. It seemed to manage remarkably well from what it could pick up on the 18mm's worth of strip-line between the SMA socket and the RF in pin whilst sat on my work bench some 16 feet away from the window. I suspect it might be just sensitive enough to acquire satellite lock given clear unobstructed sight of the sky but since it's raining right now, that experiment will have to wait a while.
The rain abated and I connected it up to a usb battery bank, after programming it to display a 5Hz 25% pulse to show the unlocked state with a 100KHz 50% for the locked state, and took it outside to get an unobstructed sky view. It did re-acquire enough satellites to get a lock after losing lock in the transition from 1st floor 'office'/'workshop' into the fresh air of the outside world.
After losing lock for several minutes whilst in the back kitchen, I was able to re-acquire lock each time I took it back outside, confirming that it could reliably receive satellites sans antenna connection without the use of a boost from an external antenna to get it to lock onto the signals as appears to be the case when indoors. Such are the vagaries of the SDR technology employed to detect such weak satellite signals that it should need such a strong hint of the signals it should remain locked onto in this case.
I'd previously observed it maintaining lock after disconnecting the antenna for ten minutes and longer before finally losing the signals completely, never to show even a hint ever again, or at least for maybe half an hour or more for even so much as a fleeting glimmer of signal. I had a sneaking suspicion that it was so close to the edge that direct sky exposure might well prove sufficient to allow it to acquire the signals without an antenna connection so it was rather gratifying to see such a positive result.
[1] This failure of the built in patch antenna, which by all accounts (and despite its less than ideal location on the backside of the module) should have produced workable signals, remained a mystery for several weeks before I finally discovered that it was merely held in place by a single solder connection and an adhesive pad, allowing me to remove it undamaged and with only minor damage to the through plated hole on the board used for the feed pin connection which will never ever be used ever again.
Lifting the patch antenna had finally revealed the true cause of its failure to provide anything other than fleeting signals, namely, several signal carrying traces within the ground-plane the antenna had been sat on. Little wonder it had totally failed to produce any useful signals. I can only suppose that this had once worked with previous versions of these modules with ground-planes devoid of any such signal traces and the manufacturer had simply overlooked this change and through inertia carried on fitting an antenna that was now doomed to certain failure by being grossly overloaded with RFI from those circuit traces.
Manufacturers can be such idiots at times. In this case, the antenna (and the LNA chip) had become a complete waste of BOMs as well as a source of frustration to the end user, many of whom would be making RMA applications. Others, like myself who were planning on using an external active antenna anyway, would save themselves (and the vendor) the trouble of RMAing the module, especially after discovering that a 3/4 wave 14cm piece of wire plugged into the SMA socket would serve as an effective substitute for a patch antenna despite the presence of the LNA attached halfway down the strip-line connecting the socket to the RF In pin of the u-blox module burdening the external antenna socket with an unwanted shunt impedance.
Removal of the microscopic LNA chip improved the performance of that 3/4 wave antenna. Strapping the patch antenna directly to the RF in line after the LNA-ectomy via a 4mm wire link failed to produce any signals but, after the patch antenna had been recovered from the board and a short co-ax fly lead soldered onto it to allow it to be reconnected via the antenna socket, it was able to give noticeably stronger signals than even the makeshift 3/4 wave antenna had given.
It may have been a useless adornment as supplied but, successfully divorced from the module, that patch antenna has now become a rather handy passive test antenna.
JBG