AI helping me with tuning SparkFun RTK Torch for woods in East Tennessee

I have been struggling to get RTK Fix on my RTK Torch with PointPerfect corrections due to my operating conditions (and my ignorance) I am primarily using the RTK Torch on my farm/forest in east Tennessee. The woods are thick and mature. The valleys can be pretty steep and deep. The cell signal is ok (2-3 bars) but drops to 1, and rarely but occasionally no bars. The new CHATGPT 5 is out and I have asked it about my problems, and had it give me suggestions on satellite elevations, Signal/Noise recommendations etc. Here’s the suggestions it has, I hope to get out to try in once temperatures are …. survey friendly

And I won’t be accepting ChatGPT5’s offer of a pre-made Config file, I don’t want to start Global Thermo Nuclear War (Wargames for you kids)

Got it — you want an optimized rover setup for the SparkFun RTK Torch, tuned for:

  • Your specific environment: hilly Tennessee terrain, tree canopy, mixed open/closed sky

  • Use case: Rover only (receives corrections, never acts as base)

  • Correction sources: PointPerfect or NTRIP (UFCORS, local CORS)

  • Workflow: Android tablet running SW Maps

  • Goal: Strong RTK FIX retention and clean data stream without wasting bandwidth or processing on unneeded messages


:wrench: SparkFun RTK Torch — Optimized Rover Config

1. Constellation & Signals

Menu: GNSS Config → Constellations
:white_check_mark: Turn on all that PointPerfect / CORS supports:

  • GPS (L1/L2)

  • Galileo (E1/E5b)

  • GLONASS (L1/L2)

  • BeiDou (B1/B2)

  • SBAS (for fallback when corrections drop)

:no_entry: Don’t enable QZSS unless you need it — not much benefit in Tennessee.


2. Dynamic Model

Menu: Positioning → Dynamic Model

  • Mode: Portable (better multipath handling than “Survey” or “Static” for moving/handheld)

  • Navigation Rate: 1 Hz or 2 Hz (RTK stability is usually better at 1 Hz under canopy)


3. Multipath Mitigation

Menu: Positioning → Advanced

  • Enable Multipath mitigation = ON

  • This helps under trees and near reflective surfaces (fence, building walls, wet ground).


4. Base Message Output (RTCMBASE)

Menu: Messages → RTCMBASE

  • RTCM1005: 0

  • RTCM1033: 0

  • RTCM1074: 0

  • RTCM1084: 0

  • RTCM1094: 0

  • RTCM1124: 0

(All zero — you’re not a base)


5. Rover Message Output (RTCMROVER)

Menu: Messages → RTCMROVER

  • All = 0 unless you are outputting corrections to another rover (not your case)

6. NMEA Output (to SW Maps)

Menu: Messages → NMEA Output

  • GGA = 1 Hz (needed for mapping)

  • GST = 1 Hz (error estimates)

  • GSA = 1 Hz (solution status)

  • GSV = 1 Hz (optional, for satellite sky view in SW Maps)

  • All others = 0 unless needed


7. Correction Input

Menu: Input → Correction Source

  • PointPerfect: Keep L-Band or Internet source enabled, depending on location

  • NTRIP: Keep credentials and mountpoint set, auto-connect on boot


8. Antenna Settings

Menu: Hardware → Antenna

  • Antenna type: “External” if using pole antenna

  • Set survey-in disabled (not needed for rover)

  • Set “Antenna Delay” = manufacturer value (typically ~30–40 ns)


9. Data Logging (optional)

If you post-process occasionally, enable logging of RAWX and SFRBX at 1 Hz.


10. Extra Stability Tweaks

  • Don’t oversample: Higher than 2 Hz navigation rate can make FIX harder under trees.

  • Disable unnecessary Bluetooth profiles: Keep only SPP (Serial Port Profile) if using Android tablet.

  • Warm start: Keep Torch powered if moving between points — reduces time to re-fix.


If you apply this config, your Torch will:

  • Spend all its processing on tracking as many quality sats as possible

  • Avoid outputting useless base data

  • Keep SW Maps getting only the clean NMEA stream it needs

  • Increase FIX retention in tree canopy and valleys


I can make you a ready-to-import JSON config file so you can load this into your Torch in under 30 seconds instead of changing menus one-by-one.

Do you want me to make that file for you?

Missing from this was ChatGPT’s suggestion to try different Density on the PointPerfect Corrections, I went with 500x500km High Density and retaining corrections for up to 60 seconds

Correction source lifetime: 60 seconds

  • Keeps RTK Fix during short cell dropouts without instantly dropping to Float.

Here is a print out of the profile, I hope it helps anyone else who is a total newbie like myself and no GNSS training other than YouTube.

�VW1216) esp_cor
}���ͥ� No core dump partition found!
E (1216) esp_core_dump_flash: No core dump partition found!

AC:15:18:92:7C:C0 - wifiMACAddress

AC:15:18:92:7C:C2 - btMACAddress
AC:15:18:92:7C:C3 - ethernetMACAddress
LittleFS Started
Using profile #0
PSRAM Size (bytes): 2097152
I2C Devices:
0x08 - HUSB238 Power Delivery Sink Controller
0x0B - BQ40Z50 Battery Pack Manager / Fuel gauge
0x5C - MP27692A Power Management / Charger
0x60 - ATECC608A Cryptographic Coprocessor

SparkFun RTK Torch v2.2

GNSS UM980 online
Profile ‘PointPerfectTILTon’ loaded
Fuel gauge configuration complete
Charger configuration complete
UM980 configuration maintained
No GNSS date/time available for system RTC.
Bluetooth SPP and BLE broadcasting as: Torch Rover-7CC2
STATE_ROVER_NOT_STARTED → STATE_ROVER_NO_FIX
Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix
Tilt sensor configuration complete
Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix
WiFi station state: WIFI_STATION_STATE_OFF, No consumers
MQTT Client state: MQTT_CLIENT_OFF, MQTT not enabled!
MQTT Client subscribe topics:
MQTT Client subscribed topics:
1: WiFi Station Starting
Soft AP Stopping
WiFi Station: Off
Host Name:
MAC Address: 00:00:00:00:00:00
Soft AP: Off
Host Name:
MAC Address: 00:00:00:00:00:00
Correction Source: None
Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix
Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix
Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix
Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix
Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix
Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix
Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix
WiFi station state: WIFI_STATION_STATE_OFF, No consumers
MQTT Client state: MQTT_CLIENT_OFF, MQTT not enabled!
MQTT Client subscribe topics:
MQTT Client subscribed topics:
1: WiFi Station Starting
Soft AP Stopping
WiFi Station: Off
Host Name:
MAC Address: 00:00:00:00:00:00
Soft AP: Off
Host Name:
MAC Address: 00:00:00:00:00:00
Correction Source: None
Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix
Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix
Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix
Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix
No GNSS date/time available for system RTC.
Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix
Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix
Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix
Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix
WiFi station state: WIFI_STATION_STATE_OFF, No consumers
MQTT Client state: MQTT_CLIENT_OFF, MQTT not enabled!
MQTT Client subscribe topics:
MQTT Client subscribed topics:
1: WiFi Station Starting
Soft AP Stopping
WiFi Station: Off
Host Name:
MAC Address: 00:00:00:00:00:00
Soft AP: Off
Host Name:
MAC Address: 00:00:00:00:00:00
Correction Source: None
Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix
Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix
Rover Accuracy (m): 0.000, SIV: 0 GNSS State: No Fix

SparkFun RTK Torch v2.2
** Bluetooth SPP and BLE broadcasting as: Torch Rover-7CC2 **
Menu: Main

  1. Configure GNSS Receiver
  2. Configure GNSS Messages
  3. Configure Base
  4. Configure Ports
  5. Configure WiFi
  6. Configure TCP/UDP
    f) Firmware Update
    i) Configure Corrections Priorities
    p) Configure PointPerfect
    r) Configure Radios
    s) Configure System
    t) Configure Instrument Setup
    u) Configure User Profiles
    +) Enter Command line mode
    x) Exit
    u

Menu: User Profiles

  1. Select PointPerfectTILTon ← Current
  2. Select PointPerfectOFFtilt
  3. Select PointPerfectNOtilt
  4. Select E6-No-Tilt
  5. Select (Empty)
  6. Select (Empty)
  7. Select (Empty)
  8. Select Trst9
  9. Edit profile name: PointPerfectTILTon
  10. Set profile ‘PointPerfectTILTon’ to factory defaults
  11. Delete profile ‘PointPerfectTILTon’
  12. Print profile
    x) Exit
    12
    Select the profile to be printed (1-8): 1

sizeOfSettings=4000
rtkIdentifier=34
antennaHeight_mm=1000
antennaPhaseCenter_mm=116.50
coordinateInputType=0
fixedAltitude=1560.0890
fixedBase=0
fixedBaseCoordinateType=0
fixedEcefX=-1280206.568
fixedEcefY=-4716804.403
fixedEcefZ=4086665.484
fixedLat=40.090294790
fixedLong=-105.185057610
observationSeconds=60
observationPositionAccuracy=5.00
surveyInStartingAccuracy=2.0
enablePrintBatteryMessages=0
shutdownNoChargeTimeoutMinutes=0
enableBeeper=1
bluetoothRadioType=2
sppRxQueueSize=2048
sppTxQueueSize=32
correctionsSourcesLifetime=60
correctionsPriority_External Radio=4
correctionsPriority_ESP-Now=5
correctionsPriority_LoRa Radio=6
correctionsPriority_Bluetooth=3
correctionsPriority_USB Serial=2
correctionsPriority_TCP (NTRIP)=1
correctionsPriority_L-Band=7
correctionsPriority_IP (PointPerfect/MQTT)=0
debugCorrections=0
debugEspNow=0
enableEspNow=0
espnowPeerCount=0
espnowPeer_0=00:00:00:00:00:00,
espnowPeer_1=00:00:00:00:00:00,
espnowPeer_2=00:00:00:00:00:00,
espnowPeer_3=00:00:00:00:00:00,
espnowPeer_4=00:00:00:00:00:00,
autoFirmwareCheckMinutes=0
debugFirmwareUpdate=0
enableAutoFirmwareUpdate=0
serialGNSSRxFullThreshold=50
uartReceiveBufferSize=2048
debugGnss=0
enablePrintPosition=0
measurementRateMs=1000
navigationRate=1
gnssConfiguredOnce=1
gnssConfiguredBase=0
gnssConfiguredRover=1
debugHttpClientData=0
debugHttpClientState=0
debugMqttClientData=0
debugMqttClientState=1
mdnsEnable=1
mdnsHostName=rtk
debugNetworkLayer=0
printNetworkStatus=1
debugNtripClientRtcm=0
debugNtripClientState=0
enableNtripClient=0

It won’t post these settings properly

nTripClineCasterHost=rtk2go(dotCOM)

ntripClientCasterHost=rtk2go.com

ntripClientCasterPort=2101
ntripClientCasterUser=Test(atTest.com) - manually added Forum won’t accept

ntripClientCasterUserPW=
ntripClientMountPoint=bldr_SparkFun1
ntripClientMountPointPW=
ntripClientTransmitGGA=1
debugNtripServerRtcm=0
debugNtripServerState=0
enableNtripServer=0
enableRtcmMessageChecking=0
ntripServerCasterHost_0=rtk2go.com
ntripServerCasterHost_1=
ntripServerCasterHost_2=
ntripServerCasterHost_3=
ntripServerCasterPort_0=2101
ntripServerCasterPort_1=2101
ntripServerCasterPort_2=2101
ntripServerCasterPort_3=2101

ntripServerCasterUser_0=test@test.com

ntripServerCasterUser_1=
ntripServerCasterUser_2=
ntripServerCasterUser_3=
ntripServerCasterUserPW_0=
ntripServerCasterUserPW_1=
ntripServerCasterUserPW_2=
ntripServerCasterUserPW_3=
ntripServerMountPoint_0=bldr_dwntwn2
ntripServerMountPoint_1=
ntripServerMountPoint_2=
ntripServerMountPoint_3=
ntripServerMountPointPW_0=WR5wRo4H
ntripServerMountPointPW_1=
ntripServerMountPointPW_2=
ntripServerMountPointPW_3=
bluetoothInterruptsCore=1
btReadTaskCore=1
btReadTaskPriority=1
debugMalloc=0
enableHeapReport=0
enablePrintIdleTime=0
enablePsram=1
enableTaskReports=0
gnssReadTaskCore=1
gnssReadTaskPriority=1
gnssUartInterruptsCore=1
handleGnssDataTaskCore=1
handleGnssDataTaskPriority=1
i2cInterruptsCore=1
measurementScale=0
printBootTimes=0
printPartitionTable=0
printTaskStartStop=0
psramMallocLevel=40
rebootMinutes=0
resetCount=0
periodicDisplay=150860726288
periodicDisplayInterval=15000
autoKeyRenewal=1
debugPpCertificate=0
geographicRegion=0
lastKeyAttempt=1754782777
lbandFixTimeout=180
pointPerfectBrokerHost=pp.services.u-blox(dotcom) another manual change due to forum

pointPerfectBrokerHost=pp.services.u-blox.com

pointPerfectClientID=7f ID GOES HERE
pointPerfectCurrentKey=1E KEY GOES HERE
pointPerfectCurrentKeyDuration=2419199999
pointPerfectCurrentKeyStart=17 KEY GOES HERE
pointPerfectDeviceProfileToken=
pointPerfectKeyDistributionTopic=/pp/ubx/0236/ip
pointPerfectNextKey=D9 KEY GOES HERE
pointPerfectNextKeyDuration=2419199999
pointPerfectNextKeyStart=175 Key goes here
pplFixTimeoutS=180
regionalCorrectionTopics_0=/pp/ip/us
regionalCorrectionTopics_1=/pp/ip/eu
regionalCorrectionTopics_2=
regionalCorrectionTopics_3=/pp/ip/kr
regionalCorrectionTopics_4=
pointPerfectService=5
profileName=PointPerfectTILTon
enablePrintRingBufferOffsets=0
gnssHandlerBufferSize=4096
dynamicModel=0
enablePrintRoverAccuracy=1
minCNO=15
minElev=15
enablePrintRtcSync=0
dataPortBaud=115200
echoUserInput=1
enableGnssToUsbSerial=0
radioPortBaud=57600
serialTimeoutGNSS=1
disableSetupButton=0
enablePrintDuplicateStates=0
enablePrintStates=1
lastState=0
debugTcpClient=0
enableTcpClient=0
tcpClientHost=
tcpClientPort=2948
debugTcpServer=0
enableTcpServer=0
tcpServerPort=2948
tcpUdpOverWiFiStation=1
timeZoneHours=0
timeZoneMinutes=0
timeZoneSeconds=0
debugUdpServer=1
enableUdpServer=0
udpServerPort=10110
enableGalileoHas=0
enableImuCompensationDebug=0
enableImuDebug=0
enableTiltCompensation=1
constellation_BeiDou=1
constellation_Galileo=1
constellation_GLONASS=1
constellation_GPS=1
constellation_QZSS=0
messageRateNMEA_GPDTM=0.00
messageRateNMEA_GPGBS=0.00
messageRateNMEA_GPGGA=1.00
messageRateNMEA_GPGLL=0.00
messageRateNMEA_GPGNS=0.00
messageRateNMEA_GPGRS=0.00
messageRateNMEA_GPGSA=1.00
messageRateNMEA_GPGST=1.00
messageRateNMEA_GPGSV=1.00
messageRateNMEA_GPRMC=1.00
messageRateNMEA_GPROT=0.00
messageRateNMEA_GPTHS=0.00
messageRateNMEA_GPVTG=0.00
messageRateNMEA_GPZDA=0.00
messageRateRTCMBase_RTCM1001=0.00
messageRateRTCMBase_RTCM1002=0.00
messageRateRTCMBase_RTCM1003=0.00
messageRateRTCMBase_RTCM1004=0.00
messageRateRTCMBase_RTCM1005=0.00
messageRateRTCMBase_RTCM1006=0.00
messageRateRTCMBase_RTCM1007=0.00
messageRateRTCMBase_RTCM1009=0.00
messageRateRTCMBase_RTCM1010=0.00
messageRateRTCMBase_RTCM1011=0.00
messageRateRTCMBase_RTCM1012=0.00
messageRateRTCMBase_RTCM1013=0.00
messageRateRTCMBase_RTCM1019=0.00
messageRateRTCMBase_RTCM1020=0.00
messageRateRTCMBase_RTCM1033=0.00
messageRateRTCMBase_RTCM1042=0.00
messageRateRTCMBase_RTCM1044=0.00
messageRateRTCMBase_RTCM1045=0.00
messageRateRTCMBase_RTCM1046=0.00
messageRateRTCMBase_RTCM1071=0.00
messageRateRTCMBase_RTCM1072=0.00
messageRateRTCMBase_RTCM1073=0.00
messageRateRTCMBase_RTCM1074=0.00
messageRateRTCMBase_RTCM1075=0.00
messageRateRTCMBase_RTCM1076=0.00
messageRateRTCMBase_RTCM1077=0.00
messageRateRTCMBase_RTCM1081=0.00
messageRateRTCMBase_RTCM1082=0.00
messageRateRTCMBase_RTCM1083=0.00
messageRateRTCMBase_RTCM1084=0.00
messageRateRTCMBase_RTCM1085=0.00
messageRateRTCMBase_RTCM1086=0.00
messageRateRTCMBase_RTCM1087=0.00
messageRateRTCMBase_RTCM1091=0.00
messageRateRTCMBase_RTCM1092=0.00
messageRateRTCMBase_RTCM1093=0.00
messageRateRTCMBase_RTCM1094=0.00
messageRateRTCMBase_RTCM1095=0.00
messageRateRTCMBase_RTCM1096=0.00
messageRateRTCMBase_RTCM1097=0.00
messageRateRTCMBase_RTCM1104=0.00
messageRateRTCMBase_RTCM1111=0.00
messageRateRTCMBase_RTCM1112=0.00
messageRateRTCMBase_RTCM1113=0.00
messageRateRTCMBase_RTCM1114=0.00
messageRateRTCMBase_RTCM1115=0.00
messageRateRTCMBase_RTCM1116=0.00
messageRateRTCMBase_RTCM1117=0.00
messageRateRTCMBase_RTCM1121=0.00
messageRateRTCMBase_RTCM1122=0.00
messageRateRTCMBase_RTCM1123=0.00
messageRateRTCMBase_RTCM1124=0.00
messageRateRTCMBase_RTCM1125=0.00
messageRateRTCMBase_RTCM1126=0.00
messageRateRTCMBase_RTCM1127=0.00
messageRateRTCMRover_RTCM1001=0.00
messageRateRTCMRover_RTCM1002=0.00
messageRateRTCMRover_RTCM1003=0.00
messageRateRTCMRover_RTCM1004=0.00
messageRateRTCMRover_RTCM1005=0.00
messageRateRTCMRover_RTCM1006=0.00
messageRateRTCMRover_RTCM1007=0.00
messageRateRTCMRover_RTCM1009=0.00
messageRateRTCMRover_RTCM1010=0.00
messageRateRTCMRover_RTCM1011=0.00
messageRateRTCMRover_RTCM1012=0.00
messageRateRTCMRover_RTCM1013=0.00
messageRateRTCMRover_RTCM1019=0.00
messageRateRTCMRover_RTCM1020=0.00
messageRateRTCMRover_RTCM1033=0.00
messageRateRTCMRover_RTCM1042=0.00
messageRateRTCMRover_RTCM1044=0.00
messageRateRTCMRover_RTCM1045=0.00
messageRateRTCMRover_RTCM1046=0.00
messageRateRTCMRover_RTCM1071=0.00
messageRateRTCMRover_RTCM1072=0.00
messageRateRTCMRover_RTCM1073=0.00
messageRateRTCMRover_RTCM1074=0.00
messageRateRTCMRover_RTCM1075=0.00
messageRateRTCMRover_RTCM1076=0.00
messageRateRTCMRover_RTCM1077=0.00
messageRateRTCMRover_RTCM1081=0.00
messageRateRTCMRover_RTCM1082=0.00
messageRateRTCMRover_RTCM1083=0.00
messageRateRTCMRover_RTCM1084=0.00
messageRateRTCMRover_RTCM1085=0.00
messageRateRTCMRover_RTCM1086=0.00
messageRateRTCMRover_RTCM1087=0.00
messageRateRTCMRover_RTCM1091=0.00
messageRateRTCMRover_RTCM1092=0.00
messageRateRTCMRover_RTCM1093=0.00
messageRateRTCMRover_RTCM1094=0.00
messageRateRTCMRover_RTCM1095=0.00
messageRateRTCMRover_RTCM1096=0.00
messageRateRTCMRover_RTCM1097=0.00
messageRateRTCMRover_RTCM1104=0.00
messageRateRTCMRover_RTCM1111=0.00
messageRateRTCMRover_RTCM1112=0.00
messageRateRTCMRover_RTCM1113=0.00
messageRateRTCMRover_RTCM1114=0.00
messageRateRTCMRover_RTCM1115=0.00
messageRateRTCMRover_RTCM1116=0.00
messageRateRTCMRover_RTCM1117=0.00
messageRateRTCMRover_RTCM1121=0.00
messageRateRTCMRover_RTCM1122=0.00
messageRateRTCMRover_RTCM1123=0.00
messageRateRTCMRover_RTCM1124=0.00
messageRateRTCMRover_RTCM1125=0.00
messageRateRTCMRover_RTCM1126=0.00
messageRateRTCMRover_RTCM1127=0.00
httpPort=80
debugWebServer=0
debugWifiState=0
enableCaptivePortal=1
wifiChannel=1
wifiConfigOverAP=0
wifiNetwork_0SSID=Surveillance249
wifiNetwork_0Password=paininthenuts
wifiNetwork_1SSID=Peanut2.4
wifiNetwork_1Password=paininthenuts
wifiNetwork_2SSID=
wifiNetwork_2Password=
wifiNetwork_3SSID=
wifiNetwork_3Password=
wifiConnectTimeoutMs=20000
outputTipAltitude=262400
useLocalizedDistribution=1
localizedDistributionTileLevel=4
useAssistNow=0
requestKeyUpdate=0
enableLora=0
loraCoordinationFrequency=910.000
debugLora=0
loraSerialInteractionTimeout_s=30
enableMultipathMitigation=1
debugSettings=0
enableNtripCaster=0
baseCasterOverride=0
rtkFirmwareVersion=v2.2
gnssFirmwareVersion=11833
gnssUniqueId=ff3bd4976a7d169b
otaRcFirmwareJsonUrl=
otaFirmwareJsonUrl=

Wow!

What a highly detailed question!

But no clear answer for you:-(

1 Like

Initially I was using my iPhone 11 for both HOTSPOT Internet access and running SW MAPS and I was having a lot of trouble. Couldn’t maintain RTK Fix, couldn’t get status on the Torch, and a bundle of other problems.

I have since purchased an unlocked ANDROID tablet, that I connect to the RTK Torch over Blue Tooth, and then the Torch gets PointPerfect corrections off Internet via HOTSPOT off my iPhone 11. And I can connect over Tablet USB connection to Torch to get status messages. Seems occasionally the Torch was disconnecting from the HOTSPOT. So beyond my ignorance on Torch Settings, my iPhone is a terrible HOTSPOT. I am getting better test results but if I lose RKT FIX first thing I check is if the Torch lost WIFI connection to iPhone. Highly recommend going ANDROID if you are going to buy an RTK Torch.

I am still testing so I don’t consider the “Best Settings” for East Tennessee woods with Point Perfect a closed topic yet…. Once I settle on a CONFIG I will post it as the “solution”