# User Terminals and GNSS
Hub: [[Topics/Starlink/Starlink|Starlink]] · Related: [[Topics/Starlink/Access Control and Speed Policy|Access Control and Speed Policy]] · [[Topics/Starlink/Jamming and Resilience|Jamming and Resilience]] · [[Topics/Starlink/People/Oleg Kutkov|Oleg Kutkov]]
## The dish is a phased array
A Starlink terminal ("dish") has no moving parts that track satellites. It is an electronically steered phased array: many small antenna elements whose signal timing is shifted so the beam points at a satellite and hops to the next one in milliseconds. The **Starlink Mini** spec sheet lists an "electronic phased array" with a 110° field of view, 1.10 kg, IP67, 25–40 W average draw and a 12–48 V, 60 W supply ([Mini spec, uk-UA](https://starlink.com/public-files/specification_sheet_mini_uk-UA.pdf)). The sheet's "96 km/h" figure is its **wind** rating, not a driving-speed limit.
## Why a dish needs GPS
Per Kutkov's teardown work ([2023 article](https://olegkutkov.me/2023/11/07/connecting-external-gps-antenna-to-the-starlink-terminal/); [Oct 24, 2026 post](https://x.com/olegkutkov/status/2113986509481144709)) ⚠️ single expert source, consistent with how LEO systems work:
- To point the beam, the terminal must know **where it is** and **where each satellite is**. It gets satellite orbits from a SpaceX server and computes look angles.
- Access is **time-division**: each cell gets a schedule of time slots, so the terminal needs accurate **time** (GPS gives time plus a 1PPS pulse).
- So GPS supplies position, time and velocity. Kutkov: "Starlink requires valid GPS data to calculate beamforming" ([reply](https://x.com/olegkutkov/status/2114116627046224038)).
- Location is also reported to the network for **service authorization** (see [[Topics/Starlink/Access Control and Speed Policy|Access Control]]).
## GNSS receivers found inside
All from Kutkov's teardowns ⚠️ (not published by SpaceX):
| Terminal | Receiver | Notes |
|---|---|---|
| Rev1 round dish | ST Teseo STA8090 | |
| Later dishes (rev2, rev3, Mini) | ST Teseo STA8089 | Rev3 uses a small ceramic chip antenna (~3 dB, linear polarization), weak under jamming; hence external-antenna mods |
| V5 consumer (stationary) | none | Per Kutkov's Oct 16, 2026 post ([post](https://x.com/olegkutkov/status/2111229557315444891)) |
| V5 `REV5_AUTO` (Cybercab) | STA8089 | Gives up a few array elements to fit it (same post) |
| Mini `mini1_rugged` (Starshield) | ST Teseo V | Kutkov's firmware research; not seen in Ukraine ❓. Teseo V parts such as STA8135GA are ST's triple-band automotive receivers ([ST](https://www.st.com/en/positioning/sta8135ga.html)) |
## Starlink PNT: positioning from Starlink itself
- The terminal can estimate position from Starlink signals plus known orbits, without GPS. Kutkov says this runs "during gaps in TDMA frames" as "a side job for the terminal's firmware", is "100% software" (no dedicated chip), and has gone "from a gimmick to a genuinely useful feature" ([post](https://x.com/olegkutkov/status/2111229557315444891)) ⚠️.
- **SpaceX on record:** in May 2025 SpaceX answered the FCC's inquiry on GPS alternatives (FCC-25-20, Mar 2025), saying Starlink already provides positioning and timing services and could offer more ([Inside GNSS](https://insidegnss.com/spacex-details-starlinks-existing-and-potential-pnt-capabilities-in-response-to-fcc-inquiry/); [Aviation Week](https://aviationweek.com/space/commercial-space/spacex-proposes-starlink-gps-letter-fcc)).
- Kutkov says firmware flags suspicious GPS and falls back to Starlink PNT, but the fallback "is not guaranteed to work reliably under every operating condition" ❓.
## Speed sensing
Kutkov says velocity comes mainly from the GPS receiver, including a proprietary NMEA message `TMPV`, filtered and cross-checked against Starlink-derived positioning and an onboard IMU, with internal thresholds ([post](https://x.com/olegkutkov/status/2113986509481144709)) ❓ (no other source). The viral claim that SpaceX detects speed from how fast a terminal switches satellites ([@mtntallpaul](https://x.com/mtntallpaul/status/2113779495333253464)) has no source ❓.
## The local gRPC API
Every dish runs a gRPC service on the local network at `192.168.100.1:9200`. Open-source tools read and control it ([starlink-grpc-tools](https://github.com/sparky8512/starlink-grpc-tools/blob/main/starlink_grpc.py)):
- `dish_inhibit_gps`: stop using GPS as a position source (rely on Starlink PNT). The local API needs no login; anyone on the dish's network can call it ⚠️ (per the tools' design; not documented by SpaceX).
- Status fields include alerts and **disablement codes** such as `MOVING_TOO_FAST_FOR_POLICY` ([device.pb.go](https://github.com/clarkzjw/starlink-grpc-golang/blob/master/pkg/spacex.com/api/device/device.pb.go)); see [[Topics/Starlink/Access Control and Speed Policy|Access Control]].
- Ukrainian developer Ihor Lytvynenko's **Star Debug** app exposes "Inhibit GPS". Focus.ua recommends turning it on only after the dish connects, and not moving the terminal afterwards ([Focus.ua](https://focus.ua/digital/596418-rossiyane-podavlyaet-gps-i-meshayut-rabote-starlink-na-pole-boya-no-vsu-uzhe-nashli-resheniya)) ⚠️ (from a search summary).
## The terminal obeys the network
"The user terminal itself has no knowledge of service plans… it simply follows commands received from the Starlink satellite" ([Kutkov, 2025](https://olegkutkov.me/2025/06/15/how-to-modify-starlink-mini-to-run-without-the-built-in-wifi-router/)) ⚠️. That is the technical core of his argument that altering GPS cannot by itself unlock a plan or region.
## Field modifications in Ukraine
Mods Kutkov has documented include external GPS antennas ([2023](https://olegkutkov.me/2023/11/07/connecting-external-gps-antenna-to-the-starlink-terminal/)) and running the Mini without its built-in Wi-Fi router ([2025](https://olegkutkov.me/2025/06/15/how-to-modify-starlink-mini-to-run-without-the-built-in-wifi-router/)). He calls these reliability work, not bypasses: "Improving the GPS antenna does not violate the TOS" ([reply](https://x.com/olegkutkov/status/2114004672532877683)).