diff --git a/conf/modules/gps.xml b/conf/modules/gps.xml
new file mode 100644
index 0000000000..d41ea13f49
--- /dev/null
+++ b/conf/modules/gps.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+ Generic GPS functions.
+ This provides generic GPS functions and multi GPS support.
+ Still requires at least one module providing the actual GPS implementation.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/conf/modules/gps_furuno.xml b/conf/modules/gps_furuno.xml
index 46b75ee16a..bef8542b6b 100644
--- a/conf/modules/gps_furuno.xml
+++ b/conf/modules/gps_furuno.xml
@@ -10,6 +10,7 @@
+
diff --git a/conf/modules/gps_mediatek_diy.xml b/conf/modules/gps_mediatek_diy.xml
index 749928366d..22a45b82e0 100644
--- a/conf/modules/gps_mediatek_diy.xml
+++ b/conf/modules/gps_mediatek_diy.xml
@@ -10,6 +10,7 @@
+
diff --git a/conf/modules/gps_nmea.xml b/conf/modules/gps_nmea.xml
index 531c55f900..afa4c8efce 100644
--- a/conf/modules/gps_nmea.xml
+++ b/conf/modules/gps_nmea.xml
@@ -10,6 +10,7 @@
+
diff --git a/conf/modules/gps_nps.xml b/conf/modules/gps_nps.xml
index d41d2d26f4..8aa5089027 100644
--- a/conf/modules/gps_nps.xml
+++ b/conf/modules/gps_nps.xml
@@ -8,6 +8,7 @@
The GPS sensor configuration is done in the header file referenced by NPS_SENSORS_PARAMS.
+
diff --git a/conf/modules/gps_piksi.xml b/conf/modules/gps_piksi.xml
index 2dd37be648..e244cf7390 100644
--- a/conf/modules/gps_piksi.xml
+++ b/conf/modules/gps_piksi.xml
@@ -10,6 +10,7 @@
+
diff --git a/conf/modules/gps_sim.xml b/conf/modules/gps_sim.xml
index edc25b558e..9e8a7b444f 100644
--- a/conf/modules/gps_sim.xml
+++ b/conf/modules/gps_sim.xml
@@ -7,6 +7,7 @@
For simple fixedwing OCaml simulator. Does not model any GPS inaccuracies/noise.
+
diff --git a/conf/modules/gps_sim_hitl.xml b/conf/modules/gps_sim_hitl.xml
index f5526ddafb..9cc7447d46 100644
--- a/conf/modules/gps_sim_hitl.xml
+++ b/conf/modules/gps_sim_hitl.xml
@@ -8,6 +8,7 @@
+
diff --git a/conf/modules/gps_sirf.xml b/conf/modules/gps_sirf.xml
index 0cf53947c0..905815798c 100644
--- a/conf/modules/gps_sirf.xml
+++ b/conf/modules/gps_sirf.xml
@@ -10,6 +10,7 @@
+
diff --git a/conf/modules/gps_skytraq.xml b/conf/modules/gps_skytraq.xml
index 118862eb14..4b98242479 100644
--- a/conf/modules/gps_skytraq.xml
+++ b/conf/modules/gps_skytraq.xml
@@ -10,6 +10,7 @@
+
diff --git a/conf/modules/gps_ublox.xml b/conf/modules/gps_ublox.xml
index 8e4b76e9e6..fce0333269 100644
--- a/conf/modules/gps_ublox.xml
+++ b/conf/modules/gps_ublox.xml
@@ -10,6 +10,7 @@
+
diff --git a/conf/modules/gps_ubx_ucenter.xml b/conf/modules/gps_ubx_ucenter.xml
index 243aa0d745..b457b4a33f 100644
--- a/conf/modules/gps_ubx_ucenter.xml
+++ b/conf/modules/gps_ubx_ucenter.xml
@@ -18,6 +18,7 @@ Warning: you still need to tell the driver, which paparazzi port you use.
description="Dynamic model used by ublox GPS filter. Default:NAV5_DYN_AIRBORNE_2G"/>
+
@@ -30,6 +31,9 @@ Warning: you still need to tell the driver, which paparazzi port you use.
+
+ gps_ublox
+
diff --git a/conf/modules/gps_udp.xml b/conf/modules/gps_udp.xml
index bf1e564059..3830793c6b 100644
--- a/conf/modules/gps_udp.xml
+++ b/conf/modules/gps_udp.xml
@@ -9,6 +9,7 @@
+
diff --git a/sw/airborne/firmwares/fixedwing/main_ap.c b/sw/airborne/firmwares/fixedwing/main_ap.c
index 69cdf9baa3..1bd5309f2c 100644
--- a/sw/airborne/firmwares/fixedwing/main_ap.c
+++ b/sw/airborne/firmwares/fixedwing/main_ap.c
@@ -190,9 +190,6 @@ void init_ap(void)
stateInit();
/************* Sensors initialization ***************/
-#if USE_GPS
- gps_init();
-#endif
#if USE_IMU
imu_init();
diff --git a/sw/airborne/firmwares/rotorcraft/main.c b/sw/airborne/firmwares/rotorcraft/main.c
index cc5ff88120..ed7a6ba9e1 100644
--- a/sw/airborne/firmwares/rotorcraft/main.c
+++ b/sw/airborne/firmwares/rotorcraft/main.c
@@ -198,10 +198,6 @@ STATIC_INLINE void main_init(void)
ins_init();
-#if USE_GPS
- gps_init();
-#endif
-
autopilot_init();
modules_init();