diff --git a/boards/parrot/bebop/CMakeLists.txt b/boards/parrot/bebop/CMakeLists.txt
index 542377683c5488ee4aecd4e7013efdab934e15a0..12dee52dc2ae0a4f9282451db77e20fc68f4aa60 100644
--- a/boards/parrot/bebop/CMakeLists.txt
+++ b/boards/parrot/bebop/CMakeLists.txt
@@ -39,7 +39,7 @@ add_subdirectory(flow)
 ############################################################################
 
 add_custom_target(upload
-	COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/scripts/adb_upload_to_bebop.sh ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/. /data/ftp/internal_000
+	COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/scripts/adb_upload_to_bebop.sh ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/bin/. /data/ftp/internal_000/px4
 	DEPENDS px4
 	COMMENT "uploading px4"
 	USES_TERMINAL
diff --git a/boards/parrot/bebop/scripts/adb_upload.sh b/boards/parrot/bebop/scripts/adb_upload.sh
new file mode 100755
index 0000000000000000000000000000000000000000..d1a4cfd52b1e926909e1d2fe234ef6391e0b6431
--- /dev/null
+++ b/boards/parrot/bebop/scripts/adb_upload.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+if [[ "$#" < 2 ]]; then
+	echo "usage: adb_upload.sh SRC1 [SRC2 ...] DEST"
+	exit
+fi
+
+# Get last argument
+for last; do true; done
+
+echo "Wait for device..."
+adb wait-for-device
+
+echo "Creating folder structure..."
+adb shell mkdir -p $last
+
+echo "Uploading..."
+# Go through source files and push them one by one.
+i=0
+for arg
+do
+	if [[ $((i+1)) == "$#" ]]; then
+		break
+	fi
+	echo "Pushing $arg to $last"
+	adb push $arg $last
+	((i+=1))
+done
+
+# Make sure they are synced to the file system
+echo "Syncing FS..."
+adb shell sync
diff --git a/boards/parrot/bebop/scripts/adb_upload_to_bebop.sh b/boards/parrot/bebop/scripts/adb_upload_to_bebop.sh
index 99d2df5898cbec3d078adf5f98ed0a75dd67c2dd..f041b243d0b6497270e215eeea78d606544e92ae 100755
--- a/boards/parrot/bebop/scripts/adb_upload_to_bebop.sh
+++ b/boards/parrot/bebop/scripts/adb_upload_to_bebop.sh
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 BASEDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
-SRC_DIR="$BASEDIR/../"
+SRC_DIR="$BASEDIR/../../../../"
 
 if [ -z ${BEBOP_IP+x} ]; then 
   ip=192.168.42.1
@@ -65,3 +65,7 @@ adb shell sync
 
 echo "Disconnecting from Bebop"
 adb disconnect
+
+echo ""
+echo "To start PX4, run the following command on the Bebop:"
+echo "/data/ftp/internal_000/px4/px4 -s /home/root/px4.config /data/ftp/internal_000/px4/"
diff --git a/posix-configs/bebop/px4.config b/posix-configs/bebop/px4.config
index 5287daad562fd41358a7aea8e022e9a3dd12a4cc..8201f78e9a3b37020adb60b9269964526e5dbb2e 100644
--- a/posix-configs/bebop/px4.config
+++ b/posix-configs/bebop/px4.config
@@ -17,7 +17,7 @@ param set MPC_XY_VEL_P 0.12
 param set MPC_XY_P 1.3
 param set MPC_XY_VEL_D 0.006
 param set MPC_XY_VEL_I 0.05
-param set MPC_XY_VEL_MAX 8
+param set MPC_XY_VEL_MAX 12
 
 param set MPC_Z_VEL_P 0.3
 param set MPC_Z_VEL_I 0.1
@@ -26,15 +26,15 @@ param set MC_YAW_P 3.0
 param set MC_YAWRATE_P 0.05
 param set MC_YAWRATE_I 3.0
 
-param set MC_ROLLRATE_P 0.07
+param set MC_ROLLRATE_P 0.05
 param set MC_ROLLRATE_I 0.5
 param set MC_ROLLRATE_D 0.0
-param set MC_RR_INT_LIM 0.5
+param set MC_RR_INT_LIM 0.3
 
 param set MC_PITCHRATE_P 0.1
 param set MC_PITCHRATE_I 0.8
 param set MC_PITCHRATE_D 0.0
-param set MC_PR_INT_LIM 0.5
+param set MC_PR_INT_LIM 0.3
 
 df_ms5607_wrapper start
 df_mpu6050_wrapper start -R 8
diff --git a/src/platforms/px4_defines.h b/src/platforms/px4_defines.h
index 189e896a77f9375cff6436bfdccd49886bd91065..b0031bd5a502cb7fc51d2aec48c3ebe59aa7551b 100644
--- a/src/platforms/px4_defines.h
+++ b/src/platforms/px4_defines.h
@@ -159,7 +159,7 @@ __END_DECLS
 #  if defined(__PX4_POSIX_EAGLE) || defined(__PX4_POSIX_EXCELSIOR)
 #    define PX4_ROOTFSDIR "/home/linaro"
 #  elif defined(__PX4_POSIX_BEBOP)
-#    define PX4_ROOTFSDIR "/data/ftp/internal_000"
+#    define PX4_ROOTFSDIR "/data/ftp/internal_000/px4"
 #  else
 #    define PX4_ROOTFSDIR "."
 #  endif