diff --git a/platformio.ini b/platformio.ini
index 4ee70850..95db806e 100644
--- a/platformio.ini
+++ b/platformio.ini
@@ -251,6 +251,6 @@ lib_deps =
[env:linux]
platform = https://github.com/geeksville/platform-portduino.git
src_filter = ${env.src_filter} - - -
-build_flags = ${arduino_base.build_flags}
+build_flags = ${arduino_base.build_flags} -O0
framework = arduino
board = linux_x86_64
diff --git a/src/main.cpp b/src/main.cpp
index aaea60a6..655d8a8b 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -268,7 +268,10 @@ void setup()
gps = new NEMAGPS();
gps->setup();
#endif
- gpsStatus->observe(&gps->newStatus);
+ if (gps)
+ gpsStatus->observe(&gps->newStatus);
+ else
+ DEBUG_MSG("Warning: No GPS found - running without GPS\n");
nodeStatus->observe(&nodeDB.newStatus);
service.init();
@@ -362,7 +365,8 @@ void loop()
{
uint32_t msecstosleep = 1000 * 30; // How long can we sleep before we again need to service the main loop?
- gps->loop(); // FIXME, remove from main, instead block on read
+ if (gps)
+ gps->loop(); // FIXME, remove from main, instead block on read
router.loop();
powerFSM.run_machine();
service.loop();
diff --git a/src/mesh/MeshService.cpp b/src/mesh/MeshService.cpp
index 70070b12..6dc24893 100644
--- a/src/mesh/MeshService.cpp
+++ b/src/mesh/MeshService.cpp
@@ -67,8 +67,8 @@ void MeshService::init()
sendOwnerPeriod.setup();
nodeDB.init();
- assert(gps);
- gpsObserver.observe(&gps->newStatus);
+ if (gps)
+ gpsObserver.observe(&gps->newStatus);
packetReceivedObserver.observe(&router.notifyPacketReceived);
}