rtkbase-knowledge-patch
RTKBase changes since training cutoff (latest: 2.7.0) — str2str service chain, settings.conf structure, F9P/Mosaic-X5/UM980 receivers, install.sh flags, systemd units. Load before working with RTKBase.
What this skill does
# RTKBase Knowledge Patch RTKBase is a web-managed GNSS base station built on RTKLIB `str2str`. It runs multiple `str2str` instances as systemd services, with a Flask/Gunicorn web GUI for configuration. ## Index | Topic | Reference | Key features | |---|---|---| | Architecture | [references/architecture.md](references/architecture.md) | str2str service chain, service topology, systemd units | | Configuration | [references/configuration.md](references/configuration.md) | settings.conf INI structure, all sections and keys, RTCM message syntax | | Installation & Receivers | [references/installation-and-receivers.md](references/installation-and-receivers.md) | install.sh flags, supported receivers (F9P, Mosaic-X5, UM980), requirements | --- ## Quick Reference: Service Chain ``` str2str_tcp.service # Main: receiver -> TCP (raw data on port 5015) +-- str2str_ntrip_A # TCP -> NTRIP caster A (raw->rtcm conversion) +-- str2str_ntrip_B # TCP -> NTRIP caster B +-- str2str_local_ntrip_caster # TCP -> local NTRIP caster (self-hosted) +-- str2str_rtcm_svr # TCP -> RTCM TCP server for clients +-- str2str_rtcm_serial # TCP -> serial port (radio link) +-- str2str_file # TCP -> raw data log files +-- rtkbase_raw2nmea # Optional: raw->NMEA for gpsd (non-UBX receivers) rtkbase_web.service # Flask/Gunicorn web GUI (default port 80) rtkbase_archive.timer # Daily archive+cleanup of raw logs ``` The main `str2str_tcp` connects to the GNSS receiver and broadcasts raw data on TCP. All other services consume from it. Services are configured via `run_cast.sh` reading `settings.conf` (INI format). ## Quick Reference: Supported Receivers | Receiver | Detection | Raw Format | Notes | |----------|-----------|-----------|-------| | u-blox ZED-F9P | USB + UART | `ubx` | Full support. `-TADJ=1` recommended. Dynamic model set to static. | | Septentrio Mosaic-X5 | USB | `rtcm3` (SBF for logging) | Reverse proxy to receiver web UI. Default creds: `basegnss/basegnss!` | | Unicore UM980/UM982 | Auto-detect | `rtcm3` only | No raw binary in RTKLIB -> no PPP/rtkrcv solution. RTCM3 streaming works. | ## Quick Reference: settings.conf Key Sections ```ini [general] version=2.7.0 web_port=80 web_authentification=true new_web_password= # Set once, hashed on next web server start maptiler_key= # Optional: aerial imagery layer [main] position='47.0983 -1.2655 36.40' # lat lon height com_port='' # /dev/ttyGNSS0, /dev/ttyUSB0, etc. com_port_settings='38400:8:n:1' receiver='unknown' # u-blox_zed-f9p, mosaic-x5, unicorecomm receiver_format='' # ubx, rtcm3, oem3, etc. antenna_info='ADVNULLANTENNA' tcp_host_addr='127.0.0.1' # Bind addr; 0.0.0.0 for external access tcp_port='5015' gnss_rcv_web_ip=192.168.3.1 # Mosaic-X5 web interface IP gnss_rcv_web_proxy_port=9090 # Flask reverse proxy port for receiver UI nmea_port='5014' # raw2nmea output port [local_storage] datadir=$BASEDIR/data file_name='%Y-%m-%d_%h-%M-%S_GNSS-1' file_rotate_time='24' # Hours archive_rotate='60' # Days before deletion min_free_space='500' # MB [ntrip_A] # (ntrip_B has identical structure) svr_addr_a='caster.centipede.fr' svr_port_a='2101' svr_pwd_a='' mnt_name_a='Your_mount_name' rtcm_msg_a='1004,1005(10),1006,1008(10),1012,1019,1020,1033(10),1042,1045,1046,1077,1087,1097,1107,1127,1230' ntrip_a_receiver_options='' # e.g. '-TADJ=1' for u-blox [local_ntrip_caster] local_ntripc_user='' local_ntripc_pwd='' local_ntripc_port='2101' local_ntripc_mnt_name='' [rtcm_svr] # Also: [rtcm_client], [rtcm_serial] rtcm_svr_port='5016' # [rtcm_udp_svr], [rtcm_udp_client] [log] level=0 # str2str trace level [network] modem_at_port='' # 4G Simcom A76XX modem AT port ``` RTCM message rate syntax: `1005(10)` = send msg 1005 every 10th epoch. No suffix = every epoch. ## Quick Reference: install.sh ```bash sudo ./install.sh --all release # Full install from latest release sudo ./install.sh --all repo --rtkbase-repo dev # Install from git branch sudo ./install.sh --detect-gnss # Detect receiver model and port sudo ./install.sh --detect-gnss --configure-gnss # Detect + configure sudo ./install.sh --dependencies # Install apt packages only sudo ./install.sh --rtklib # Compile RTKLib (v2.5.0-EX) sudo ./install.sh --unit-files # Deploy systemd services sudo ./install.sh --gpsd-chrony # Setup time sync sudo ./install.sh --start-services # Start all services sudo ./install.sh --user=john # Install as specific user ``` `--all` combines: `--dependencies --rtklib --unit-files --gpsd-chrony --detect-gnss --configure-gnss --start-services`. ## REST API ``` GET /api/v1/infos # Base station info (position, receiver, mount name) ``` ## Requirements - Debian >= 12 (Bookworm) / Ubuntu >= 24.04 - Python >= 3.11 - RTKLib v2.5.0-EX (from rtklibexplorer) - Default web password: `admin` - Armbian images: `basegnss.local`, SSH: `basegnss/basegnss!` ## Reference Files | File | Contents | |---|---| | [architecture.md](references/architecture.md) | str2str service chain topology, systemd service details, service dependencies | | [configuration.md](references/configuration.md) | Complete settings.conf reference — all sections, keys, and defaults | | [installation-and-receivers.md](references/installation-and-receivers.md) | install.sh flags, receiver detection/configuration, supported hardware, requirements |
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.