System: ClockworkPi uConsole (RPi CM4) + HackerGadgets AIO V1 board (“UC AIO Ext”), package hackergadgets-uconsole-aio-board v1.41, Debian 12 (bookworm), kernel 7.1.4-v8+ aarch64.
GPS is a u-blox module wired to /dev/ttyS0 (/dev/serial0), read via gpsd. I ran into two independent problems getting a real fix out of it. Writing this up since I couldn’t find both root causes documented together anywhere.
Symptom 1: ANTENNA OPEN, zero satellites in view
gpspipe -r showed a persistent $GPTXT,01,01,01,ANTENNA OPEN*25, $GPGSV sentences never populated, and $GPRMC stayed void. Note: UBX-MON-HW NAKs on this module/firmware, so you can’t rely on that to check antenna status — the NMEA $GPTXT line is the reliable channel here.
Ruled out with a structured swap test (2 different antennas, module COLDBOOT reset, IPEX connector reseat — 4 independent variables), all producing the identical ANTENNA OPEN result. That points away from antenna/cable/firmware-state and toward the board itself.
Root cause: known AIO V1 manufacturing defect — a leftover test diode on the board back-feeds power onto the GPS antenna line. Measured 4.9/4.85 V at the SMA end, consistent with another user’s report of 4.7 V from the same defect ( HackerGadgets AIO Board Package - #812 by Michal_Wojcik , user Michal_Wojcik).
Fix: desolder the offending part. On my board it’s a SOT-23 package, SMD marking “3K10” — consistent with the “diode” description in the referenced thread (SOT-23 is a common package for small-signal/Zener diodes). Recording the marking here so others can positively identify the same part without re-deriving it.
After removal: ANTENNA OK consistently across multiple runs (300/300, 190/190 sentences checked), at a window and outdoors.
Pictures below.
Symptom 2: real fix (mode:3) but lat/lon frozen at 30.0/120.0
After fixing the antenna issue, $GPGSV still reported 0 satellites and gpspipe -w TPV output showed mode:3 with lat/lon stuck at an exact placeholder (lat:30.000000029, lon:119.999999994), even outdoors with a clear sky view. That ruled out signal attenuation.
The tell: in the same TPV JSON line, the ecefx/ecefy/ecefz fields were live and changing, and decoded to a real, correct position (~48°N, 16.3°E). Independently confirmed with ubxtool -p NAV-STATUS -P 3.14 -f /dev/ttyS0, which returned live UBX-NAV-SOL/UBX-NAV-POSECEF data. So the receiver genuinely had a 3D fix with 12 satellites — only the geodetic lat/lon field in gpsd’s output was stuck.
Root cause: confirmed known bug in gpsd 3.22 (this system runs 3.22-4.1+deb12u1 from bookworm) — when gpsd auto-configures a u-blox receiver into its binary (“ublox”) protocol mode, the JSON TPV lat/lon/alt fields freeze at a fixed non-updating value while ECEF keeps updating correctly. Fixed upstream in gpsd 3.24+; not yet backported to bookworm’s packaged version. Also confirmed via a Raspberry Pi Forums thread covering the same gpsd 3.22 + u-blox + bullseye/bookworm combination.
Fix: add -p to GPSD_OPTIONS in /etc/default/gpsd (was "-n", now "-n -p"). -p disables gpsd’s auto-configuration and keeps the receiver in plain NMEA mode, avoiding the buggy binary-mode code path. Then sudo systemctl restart gpsd.
Verified: gpspipe -w TPV now reports mode:3 with real, correct coordinates matching the actual location.
Summary for anyone hitting this on an AIO V1 board
- If you see
ANTENNA OPENin the NMEA stream and it survives an antenna swap and COLDBOOT: it’s very likely the board’s diode defect, not your antenna or module. Desolder the SOT-23 part marked “3K10” (or whatever the equivalent marking is on your board revision). - If antenna status is
ANTENNA OK, you have a real 3D fix (checkecefx/y/zorubxtool NAV-STATUS), butlat/lonin gpsd’s TPV output sit at exactly30.0/120.0: that’s the gpsd 3.22 auto-config bug. Add-ptoGPSD_OPTIONSin/etc/default/gpsdand restart the service.
Both issues can be present at the same time and mask each other, so check antenna status first, then lat/lon behavior once that’s clean.
Regards,
Michael
P.S.: Check my 3D printed case here: https://makerworld.com/en/models/1873361-uconsole-protection-case


